ICPC World finals 2026에 참가하기 위해 방콕에 다녀왔다.

우승하였다. 막판 대역전+오랜만에 큰 역할을 많이 해낸 대회라 그런지 여운이 오래 남는다.
근황(9/1~)
- ICPC World finals 2025에 참가하여 동메달을 수상하였다. 후기
- SNUPC 2025에 참가하여 3위를 하였다. 쟁쟁한 참가자들 사이에 실력 만큼의 등수를 받긴 했지만 대회 내용은 매우 맘에 안 들었다. 팀원 platter는 9위, kizen은 출제하였다.
- ICPC Seoul regional 예선에 참가하여 5위를 하였다. 3시간의 짧은 대회기도 하고 매년 그렇듯 예선 등수가 의미있다고 생각하지 않기에 잘 못 봤다고 해서 별 생각이 없다. 팀원 모두 쉬운 문제 2개씩 푼 것 외에 아무 것도 한 것이 없다.
- KAIST 15th ICPC Mock Competition에 참가하여 1위를 하였다. 팀원 kizen은 학교 시험과 겹쳐 참가하지 못했고, platter와 둘이서 2인팀으로 대전에 내려갔다. 총 10문제를 풀었고 5문제 씩 풀었지만, 고전할만한 어려운 문제 2개(D, E)를 platter가 해결하면서 버스 기사 역할을 자처하며 프리즈 전에 우승을 거의 확정냈다. 나는 초반 푸쉬를 빠르게 하면서 초반에 2등과 3솔브 격차를 내었다. ICPC 한국 강팀 중 floorsum, endgame을 제외하고 다 참가한 것 같은데 압도적인 성적을 내서 좋았다.
- NYPC Codebattle에 참가하여 1위를 하였다. 세명+floorsum의 qwerasdfzxcl로 나갔고 1000만원/4의 상금을 수령하였다. 달다. kizen이 초반에 중요한 역할을 해내면서 우승할 수 있었다.
- LGCPC 2025 예선 3번을 출제하였다. 퀄리티가 맘에 들진 않는데 그래도 나쁘진 않다. 잘하는 사람들이 많이 참가하지 못해 1솔브 밖에 나오지 않은 건 아쉽다.
- 팀원 platter과 동시에 Codeforces 2900을 달성하였다. 마지막 대회에서는 두 문제 사이에서 갈팡질팡하다가 끝나기 11분 전에 뭐라도 짜야겠다 마음먹고 110줄을 짜고 생각없이 제출했는데, 대회 종료 4분전에 뚫는데 성공하여 도파민이 많이 나왔다. 끝나고 셀프핵하면서 즐겼다. 8월 이후 거른 라운드 3개를 버추얼 돌면서 버추얼 레이팅 3000도 복귀하였다. 월드파이널이 끝난 이후 부터 잘 해야된다는 생각을 버리고 즐겁게 하자고 마음먹으니 문제들이 잘 풀려서 기분이 좋다.
대회 전
ICPC 외국 리저널에 참가하자는 이야기는 1년 전 부터 나왔다. 그 당시 ICPC 2024 서울에 데인 또래 친구들이 강력하게 외국 리저널 참가를 주장하였다. 2025 Asia 지역의 리저널 날짜가 발표되고보니 방콕 말고 일정이 다 애매했고, floorsum 팀과 같이 방콕에 갔다. Floorsum은 빈 자리에 영입한 2018 IOI 금 imeimi2000님이 생각보다 훨씬 잘하는 듯한 모습이었다. 팀 연습을 할 때 우리가 꽤나 큰 차이로 진 연습도 있어 놀랐다.
방콕에 밤에 도착하고 바로 숙면을 취했다. 다음 날 예비소집이었는데, 대회가 13문제다, 프린트는 최대 50장만 할 수 있다 등 다양한 정보들을 알려주었다. 앞에 베트남 팀이 월드파이널 진출 팀이냐고 물어보고 같이 사진 찍자고 요청하여서 놀랐다. 한 명이 나보고 쵸비를 닮았다고 5번 정도 말했다.(실제론 하나도 안 닮았다;;) 끝나고 컨디션 관리를 위해 바로 호텔로 돌아갔고, 저녁은 floorsum 팀과 호텔 2분 거리에 있는 소고기 덮밥을 먹었다. 호텔에서 LCK를 보며 쵸비가 멸망하는 모습을 지켜보았다. 괜히 아까 쵸비를 닮았다고 한 베트남 친구의 말이 기억나며 내일 나도 멸망하는 것이 아닌가 싶었다. 9시에 숙면을 취했다.
6시에 기상해 호텔 조식을 먹고, 7시 반에 대회장에 도착하였다. 아침 8시에 대회를 시작하는 환상적인 아이디어는 대체 누구 머리에서 나온건지 궁금하다. 사전에 조사하여 NUS 2시드 Penguin and Tonic팀 및 한국 두 팀이 3강 체제를 이룰 것을 알고 있었는데, 세 팀이 생각보다 멀리 떨어져 있지 않았다. 특히 floorsum 팀과는 (2, 1)만큼 떨어져 있었다. 다행히 칸막이가 있어 서로 거의 보이지 않았지만 대화를 크게 하지 못하는게 약간의 단점이었다.
대회 중
초반
13문제이고 초반에 쉬운 문제들이 대거 있다 보니 정신 없게 풀었다.
내가 ABCDE, platter가 FGHIJ, kizen이 컴퓨터 로그인/vscode 세팅 및 KLMN을 읽었다. 순서대로 읽던 중 내가 B를 잘못 읽어 4분에 틀린 제출을 하나 하였다. N이 2분 째에 퍼솔이 나왔기에 kizen이 바로 풀었다.(9분) 문제를 제대로 읽은 내가 B를 4줄 정도 추가하여 고친 뒤 ac를 받아 퍼솔을 먹었다.(9분, First solve) G를 읽은 platter가 쉬울 것 같다고 하고 막 짜더니, 퍼솔을 먹었다.(20분, First solve) 12분에 I의 퍼솔이 나왔는데, G를 짜기 전 platter가 읽고 나한테 던졌고, 나는 읽자마자 풀이를 냈지만 확신이 없어 kizen한테 던졌다. Kizen은 I의 풀이를 내고 구현하였지만 틀렸다. 그 와중 나는 C의 풀이를 냈고, 구현하였지만 나도 틀렸다. 내가 C를 짤 동안 I의 틀린 부분을 찾은 kizen이 고친 후 ac를 받았다.(46분) 곧이어 나도 C를 고쳤고, 퍼솔을 먹었다.(51분, First solve) C를 고칠 동안 M의 풀이를 낸 kizen이 4분만에 ac를 또 받아냈다.(55분) H를 보던 platter는 시간제한 4초에 50000 루트 로그를 주장하였고, 빠르게 짠 뒤 2번의 tle를 받았다. 1.5배 이상 최적화 한 뒤 다시 제출하였고, 다행히 더 틀리진 않았다.(84분)
팀원 셋 모두 매우 빠르기 때문에 초반 푸쉬가 꽤나 좋은 편인데, 이번 대회 초반은 많은 문제에 wa를 적립하며 완벽하진 않았다. 84분 시점에 Penguin and Tonic팀이 우리보다 아주 약간 빠른 7솔브였고, floorsum은 5솔브였다. Floorsum이 92, 95, 107분에 문제를 풀며 순식간에 8솔브로 1등으로 올라섰다.
중반
Floorsum 팀이 95분에 E를 퍼솔하였기에 platter가 E를 가져간 후 빠르게 해결하였다.(112분) 다시 1등으로 올라섰다. 나는 A, K를 번갈아 보고 있었고 kizen은 J를 보고 있었다. Kizen이 J를 짰으나 로컬 tc에서 실수오차가 너무 크게 났고, 제출하면 틀릴게 뻔하여 제출하지 않았다. 나는 J를 도와주러 갔으나 kizen의 풀이를 더 발전시키긴 어려워 보였다. J에 이미 긴 시간을 투자한 kizen이 J를 버리고 L로 갔고, 나는 K를 집중적으로 보며 A, J, K 세 문제를 동시에 보고 있었다.(끝나고 알고보니 대회에서 가장 어려운 세 문제였다;;) Platter은 F를 조금 보다가 버리고 D에 온 힘을 다하고 있었다.
문제는 우리가 갈팡질팡할 동안 floorsum이 10솔브를 하였다는 것이다. 153분에 L, 155분에 D를 풀고 환호하는 소리가 들렸는데, 2솔브 차이로 지고 있는 상황에서 평정심을 유지하기 어려웠다. Platter가 D를 구현하였으나 예제가 나오지 않았고, 컴퓨터를 kizen에게 넘겨주었다. L은 구현만 어려운 쉬운 문제였고 1번의 wa 이후 ac를 받으며, 1솔브 차이로 좁혔다.(160분) 다행히 1솔브를 더 하면 페널티에서 우위가 되어 1등을 탈환하는 상황이라, 동일 솔브만 따라가보자는 목표를 세웠다.
Platter가 D에 온 힘을 다한 뒤 ac를 받아냈다.(181분) 1등을 탈환한 지 2분만에 floorsum에서 F를 풀었고, 다시 뒤쳐졌다. Kizen은 J에서 계속 멸망하고 있었다. 이성적으로 생각해보니 내가 J를 풀지 않으면 팀이 멸망한다는 결론을 내렸다. Platter은 J같은 수학 맛이 강한 문제에 약하고 이미 J를 풀지 못하겠다고 선언하였고, kizen은 이미 J에 1시간이 훌쩍 넘게 시도하고 멸망하고 있기에 J를 풀 사람은 나 밖에 없었다. 결국 1시간 넘게 보던 K를 떠나보내고(ㅠㅠ) J의 새로운 풀이를 내기 위한 여정을 시작했다.
내가 J의 새로운 풀이를 내고 구현을 시작하였다. 구현하는 동안 platter가 F의 풀이를 내고 kizen이 약간 보충해주면서 F도 구현 가능 상태가 되었다. 214분에 J를 제출하였는데, wa를 받았다. 프린트 요청을 하고 F에 컴퓨터를 넘겨주려 하는데, 프린트 받은 파일이 내가 짠 코드가 아니었다. 알고보니 실수로 J에 동현이가 먼저 짠 틀린 풀이를 제출한 것이었다. 내가 새로 짠 코드를 부랴부랴 냈으나 그것마저 틀렸다. 그와 동시에 floorsum에서 J의 first solve를 가져갔다.
우리 팀에선 긴 정적이 이어졌다.

큰일났다. 2솔브 차이도 큰 문제인데, 페널티 계산을 해보니 우리가 2문제를 맞아도 페널티에서 밀리는 것이 거의 기정사실이었다. 70분안에 3솔브를 더 해야하는데 상식적으로 말이 안 됐다. J, F를 푼다고 해도 남은건 제출 하나 없는 A, K인데, 그냥 가망이 없어보였다. 정적 속에서 내가 J를 고치는 타이핑 소리만 들렸다.
후반
J를 고치고(236분), F를 한 번 틀린 뒤 ac를 받으며(244분) 솔브 수는 따라잡았다. 하지만 floorsum은 12솔브 1361페널티, 우리 팀은 12솔브 1387페널티로 간발의 차이로 지고 있었다.
나는 이 상황에 대한 막중한 책임감을 느꼈다. 현재 풀린 문제 중 가장 어려운 문제인 J를 풀며 1인분은 이미 했지만, 그게 문제가 아니라 J에 제출하려던 소스와 다른 소스를 제출해 20분의 페널티를 날린 것의 나비효과가 크게 작용했다. 제대로 제출하여 20분을 아꼈다면, F를 257분 안에만 풀면 되어서 성급하게 제출하지 않고 충분한 검토 후 1번에 맞아 페널티가 우세했을 것이다.
그렇기에 정말 간절하게 한 문제를 더 풀고 싶었다. 이대로 26분차이로 지면 너무 억울해서 일주일 내내 생각날 것 같았다.
F를 맞은 뒤 56분이 남았고 다시 정적을 깨고 서로 잘 해보자고 하였다. 26분 차이로 지면 안 된다고 한 문제를 꼭 더 풀어보자고 하였다. 56분이면 세 명이서 머리를 맞대고 한 문제를 풀기 충분하고도 넘치는 시간이라고 긍정적인 말들이 오고 갔다.
A, K 둘다 제대로 고민해 본 사람은 나밖에 없었다. 난 A, K 둘 다 갈피도 못 잡았으나 A는 10분, K는 1시간을 봤기 때문에 팀원들에게 K는 절대 풀 수 없다고 선언하였다. 문제를 곁눈질한 팀원들이 대충 동의하고 셋이서 A에 올인하였다.
A는 정말 갈피를 잡을 수 없는 문제였다. 접근 조차 힘든 인터랙티브 문제였고 셋 다 오랜 시간 동안 갈피를 못 잡고 있었다. 매우 간절한 덕분이었을까, 희망이 없나 싶어지던 그 때 갑자기 A를 해결할 수 있는 핵심 아이디어가 머릿속에 떠올랐다. 아이디어의 증명을 대충 해둔 뒤 팀원들에게 말하였고, 매우 반가운 표정의 팀원들을 관찰할 수 있었다. 풀이가 한 번 터졌으나 방향성은 거의 잡아둔 상태였고 내가 다시 바로 고칠 수 있었다. 나는 너무 심하게 떨려서 다리에 힘이 들어가지 않는 상태였고, 이 상태로는 구현할 수 없다고 생각하여 풀이의 정당성을 검증할 겸 platter에게 풀이를 완벽히 전달한 후 구현을 맡겼다. 후들거리는 다리를 진정시키고 앉았다.
테스팅용 python 코드를 준 것도 아닌데 쿼리 400번을 써야해서 인터랙티브 테스팅을 제대로 하기 힘들었다. 여러 케이스 중 특별한 한 케이스만 테스팅해보고 약간의 수정을 거친 뒤 제출하였다. 긴 시간의 PENDING이후 ACCEPTED가 떴고, 도파민 한도 초과로 자리에 쓰러졌다.(284분, First solve)
어떤 문제에 진심 제출을 했는지 알 수 없게 K에도 낚시용 제출을 하였다. Floorsum팀에서 두 명이 일어나서 컴퓨터를 응시하는 것이 보였고, 그에 따라 구현하고 있다는 것을 알 수 있었다. 16분동안 마음을 졸이며 floorsum팀이 제출하는지 확인하려 프리즈된 스코어보드를 무한 새로고침하고 있었다. 295분에 floorsum팀이 A에 제출하였으나, 297분까지 환호 소리가 들리지 않고 여전히 두 명이 일어나서 컴퓨터를 봐주고 있는 것을 보니 wa라는 확신이 들었다.
대회 후
도파민이 가시지 않아 자리에서 팀원들과 같이 웃고 있었다. 두 팀이 몰려와 J의 풀이를 물어보았고 내가 열심히 설명했는데, 내 영어가 유창하지 않아 다들 제대로 이해하지 못한 눈치였다.
230분 시점만 해도 3솔브를 더 해아 우승을 할 수 있는 암울한 상황이었는데, 거기서 가장 어려운 두 문제를 내가 풀면서 역전에 성공하는 만화같은 시나리오가 이루어지니 이보다 더 행복할 수는 없었다. A를 푼 것도 잘 했지만, 팀원이 박고 있었던 J를 살려낸 것이 더 마음에 들었다. 또한 Floorsum의 중반 속도에 크게 놀랐다. 역시 엄청난 강팀이다.
대회 측에서 인터뷰를 너무 많이 시켜서 조금 피곤했지만, 그마저도 행복했다. 비행기 시간이 촉박해 바로 공항으로 갔고, 면세점 쇼핑을 하며 즐거운 시간을 보냈다. 방콕이라는 곳을 즐기지 못하여 아쉬웠다.
서울 리저널까지 2주가 남았는데, 자만하지 말고 다시 잘 해봅시다. 화이팅.