본문 바로가기

Problem Solving

(임시) 2020 ICPC Seoul Regional 후기

* 페이스북에 올린 것을 급하게 그대로 올립니다.

14일날 있었던 Seoul Regional과, 그리고 리저널을 치기 위해서 노력했던 시간들에 대해 짧은 후기글을 올립니다. (긴 후기는 나중에 블로그에 올라올 것 같습니다.) 두서가 좀 없어도 이해해 주세요.

저희 팀은 결성된 지 상당히 오래 된 팀입니다. 올해 1월에 만들어졌고, 그때부터 팀연습을 몇 번 했던 것 보면 태생이 빡겜을 하기 위해 만들어진 팀이었던 것 같습니다. 저 또한 재수하려고 마음을 먹었다가 이 팀 구성이면 Semi-World Final에는 무조건 진출하겠다고 생각이 들어서 재수를 포기하고 PS를 계속 했습니다. 결과적으로 좋은 성적을 냈으니 옳은 선택이었다고 생각합니다.

사실 저희 팀이 객관적으로 잘하는 팀이다 말하기는 아직도 힘들다고 생각합니다. 저희 팀이 이번 리저널 이전에 치뤘던 두 번의 실전인 UCPC와 인터넷 예선 모두 처참하게 말렸고, 고려대학교의 다른 팀에게 두 번 다 밀렸습니다(I hate PS, 아직도 충분히 강력한 팀이라고 생각합니다. 적어도 저는 다시 붙을 때 이길 거라는 보장을 못 합니다). 원인은 간단한데 솔직히 다른 두 팀원 서태수님(cheetose)/노세윤(knon0501)님에 비해 제 실력이 명확하게 떨어지는 것이 맞고, 그로 인해서 풀어야 할 문제를 시간이 없어서 못 푸는 경우가 꽤 자주 나왔습니다. 제가 다이아 수준의 문제에서 힘이 너무 빠르게 빠진다는 점이 치명적으로 작용했습니다.

그럼에도 불구하고 다른 팀에 비해서 훨씬 많은 팀연습(아무리 못해도 열몇번은 한 것 같습니다)을 통해서 단점을 찾고, 팀적인 자원을 활용하는 방법을 연구해서 상대적으로 보완할 수 있었던 것 같습니다. 다른 두 분에 비해 제가 영문 디스크립션을 읽는 속도가 훨씬 빠르다는 점을 이용해서 문제를 최대한 많이 읽고 풀만해 보이는 문제들을 구현이 매우 빠르고 정확한 태수님한테 전달해서 초반 패널티를 처음 연습했을 때에 비해 매우 크게 줄일 수 있었습니다. 풀어야 하는 어려운 문제는 세윤님이 어지간하면 시간을 많이 쓰더라도 하나를 무조건 풀어주셨습니다. 저는 다른 두 분이 문제를 밀어내는 동안 스코어보드를 보고 전략을 짜고, 코딩할 때 실수할 수 있을만 한 예외사항들을 미리 찾아서 검토하거나 다른 문제에 대한 개략적인 접근을 찾아서 팀원에게 전달했습니다. 제가 무서워서 키보드를 많이 잡지 않으려고 했는데 지금 생각하면 제가 키보드를 잡는 비중을 늘리는 것이 더 도움이 되지 않았을까 하는 아쉬움은 있습니다. 어쨌던 간에 다른 팀보다 팀연습을 많이 진행한 것이 실제 대회에서 뇌절하지 않고 패널티를 크게 줄이는 데 큰 힘이 된 것 같습니다.

이번 리저널의 목표는 사실 Semi-World Final이 코로나로 인해 없어진 상황에서 수상권 안에만 드는 것이 목표였습니다. 예선에서 거의 20등에 가까운 성적을 받기도 했고, 서울대 6팀과 카이스트 2팀 내외, 그리고 정말 몇 달을 밤잠을 못 자게 만들었던 숭실대 팀 181920을 이기는 것이 사실상 힘들다고 예상했습니다. 심지어는 고려대의 I hate PS 팀을 이길지도 확실하지 않아 학내 1등도 보장할 수 없었습니다. 무엇보다 181920이 너무 무서웠습니다. 에렌-으드누-주떼 라인업은 객관적으로 레이팅으로 봤을 때나 예선 성적으로 봤을 때나 포텐셜이 엄청난 팀입니다. 이 팀을 이겨야 대학순위 3위로 World Final에 진출할 가능성이 조금이라도 생기기 때문에, 정말 피말리는 경쟁이 되었습니다.

결과적으로 이번 리저널은 저희 팀의 고점을 보여줄 수 있는 대회가 되었습니다. 문제가 전반적으로 디스크립션이 길고 작년 대비 난이도가 어렵지 않아서, 치토스와 제가 초반 문제를 갈아마실 수 있는 환경이 조성되었고 패널티를 훅 줄일 수 있었습니다. 이를 가장 단적으로 보여준 것이 H First Solve인 것 같습니다. H의 경우에는 그림이 무서워서 계산 기하처럼 보이고 쓸데없는 잡설도 많아서 다른 팀들이 잘 읽지 않았던 것 같습니다. 그런데 저는 문제를 가리지 않고 다 읽고(시작 후 1시간 안에 하나 정도를 제외한 모든 디스크립션을 다 읽어 둡니다), 제가 보통 한 지문을 읽는 데 2분에서 3분 남짓이 걸리는데 그날따라 운이 따라서 30초만에 독해및 풀이 정당성 증명이 됐습니다. 바로 "등차수열을 찾으면 돼요" 느낌으로 치토스님한테 전달했고, 구현에 강한 태수님답게 순식간에 FFT를 코딩해주셔서 퍼솔을 차지하게 되었습니다. 시작한지 30분만에 풀만할 문제는 아니라고 생각하기 때문에 저희가 예선에서 그리 좋은 성적을 내지 않은 것과 맞물려서 아마 많은 중위권 팀들을 엿먹이는 결과가 나오지 않았을까 싶습니다(...) 제가 상대적으로 좋아하고 구현에 매우 강하다고 생각해 팀노트에 거의 5장을 할당해 둔 계산 기하 문제가 나오지 않은 것은 아쉽지만, 그래도 순위권을 가른 I 또한 세윤님이 잘 푸시는 유형이라 이득을 봤던 것 같습니다. 사전지식 부족으로 F와 L을 해결하지 못한 것은 많이 아쉽습니다만, A가 1트에 풀린 것은 너무 맘에 듭니다. 저는 BCE의 풀이를 냈고 BC는 직접 코딩을 했습니다. 이렇게 말하면 한 게 없는 것 같지만 치토스님이 보신 거의 모든 문제를 제가 읽고 요약해서 전달했기에, 0.5인분정도는 했다고 생각합니다.

최종 성적은 8 Solve 840min에 전체 7위, 대학순위 3위, 학내 1위로 마무리짓게 되었습니다. 진짜 영혼을 팔아서라도 정말로 이기고 싶었던 181920을 패널티 128분 차이로 이기게 되어 너무 기쁩니다. 스코어보드를 깔 때 181920의 L이 틀리고 대학순위 3위가 확정되는 순간 팀원끼리 환호성을 지르면서 얼마나 기뻐했는지 모릅니다. KAIST도 만만한 팀이 하나 없었는데 바로 위 순위인 Everybody를 제외하면 나머지를 모두 이겼고, 압도적으로 보이던 서울대 팀들 중에서도 한 팀을 이겼습니다(물론 rkm0959님이 봐주기를 시전하셨다는데 이견은 없습니다만)! 대한민국에 World Final 티켓이 몇 장 주어질 지 모르지만, 만약 3장 주어진다면 꿈에 그리던 세계대회에 출전하게 됩니다. 티켓이 3장 주어질 확률이 그렇게 높지는 않은 것 같지만, 그렇다고 아주 낮지도 않은 것 같습니다. 저희 팀원들과 팀연습을 하는 것이 이번이 마지막이 아니었으면 좋겠다고 간절하게 기도하고 있습니다(만약 티켓이 2장이라면 WF 대회장에 시한폭탄을 설치할 예정입니다). 하지만 당장은 리저널 7위의 기쁨을 조금 더 누릴 생각입니다. 너무 기쁜 나머지 뒤풀이에서 소주로 병나발 불다가 갤럭시 버즈를 잃어버리는 미친짓을 저지르기도 했습니다...

모든 힘을 써서 리저널에서 포텐셜을 터트렸기에, 이제는 더 이상 걸어갈 힘이 없습니다. 당분간은 한국의 천재 crypto hacker 노규민님의 도움을 받아서 CTF Crypto를 조금 공부해볼 생각입니다. 저를 WF에 갈 수 있을지도 모르는 상황까지 끌고 와준 저희 팀 팀원 서태수, 노세윤에게 정말 무한한 감사를 표하고 싶습니다. 그리고 거의 반확정적으로 월드 파이널에 진출하는 SNU LUW ICPC WF팀과 KAIST everybody 팀에게 박수를 보냅니다. 저는 한국에 배정되는 티켓 수가 발표되기만을 기다리면서 발을 구르고 있겠습니다.

앞으로 더 열심히 하겠습니다.

'Problem Solving' 카테고리의 다른 글

[BOJ] 20093 Coins  (0) 2021.05.26
정보올림피아드 / 알고리즘 과외 안 구합니다.  (1) 2021.02.04
[SCPC] 2020 1차 예선 풀이  (0) 2020.08.22
2020 숭고한 Marathon 참가 후기  (2) 2020.07.20
Google Hash Code 2020 후기  (1) 2020.02.21