동아리 톡방에서 이데일리 코딩대회에 대한 소식을 들었다. 학부를 졸업했지만 아직 대학원생은 아니라는 애매한 신분 때문에 대부분의 대회를 참가하지 못했었는데, 이번 대회는 청소년부/성인부로만 나뉘어져 있어 참가신청을 할 수 있었다.

예선

10월 26일 온라인 예선이 다가오자 안내문자가 날아왔는데, 처음엔 눈을 의심했다. 48시간 대회라는 점도 특이했지만 120문제라는 엄청난 문제 수에선 말이 나오지 않았다. 다른 대회들이 보통 3~5시간 동안 5문제, 팀으로 진행하는 ICPC도 많아야 12,13문제를 내는데 예선에서부터 120문제라는 공지를 보고 과연 어떤 문제들이 나올지 기대(?)되기도 했다.

솔직히 말하면 예선의 퀄리티는 그다지 높지 못했다. A+B처럼 아주 기초적인 문제는 시스템 테스트를 위해 냈다고 생각해도 별찍기류의 문제가 여럿 등장하는 부분에서는 “차라리 이런 문제들을 빼고 문제 수를 줄이는 게 더 좋겠다”라는 생각까지 들었을 정도로 아쉬운 부분들이 꽤 있었다. 특히 온라인대회의 한계 + 공정성을 위해서라고는 하지만 문제에 대한 Clarification 수단이 부재했다는 점이 이런 불만을 더 크게 느끼게 만들었다. 예선 중 QnA게시판을 통해 문제 오류에 대한 많은 질문들이 올라왔지만, 모든 답변은 아래와 동일했다.

내년에는 이런 점들은 조금 보완했으면 좋겠다.

본선

예선을 통과하고 서울대학교 글로벌컨벤션센터에서 열리는 본선대회에 참가했다.

익숙한 풍경과 함께 테이블마다 노트북이 세팅되어있었다.

대회는 3시간동안 20문제를 해결하는 방식이었다. 다행히 생각보다는 현실적인(?) 숫자였고 대회 시작 후 간단히 문제들을 훑어보니 예선보다는 검수가 꽤 된 문제들이라는 생각이 들었다. 배점이 낮은 문제부터 먼저 해결한 후 배점이 높은 문제 순으로 하나씩 코딩을 진행했다.

쉬운 문제들은 간단한 DFS,BFS로 금방 해결할 수 있는 난이도였지만 어려운 문제들은 플로우나 FFT까지 다루는 문제들이 나왔다. 플로우(이분매칭)는 입력 사이즈가 작은 걸 보고 그냥 Ford–Fulkerson 알고리즘을 돌렸고, FFT는 다행히 원리를 기억하고 있었기에 팀노트 없이도 어떻게든 대회가 끝나기 전에 유도해낼 수 있었다. 개인적으로는 통계, 기댓값에 관한 1번문제가 제일 어려웠는데 대회가 끝날 때까지 고민하다가 결국 답안을 제출하지는 못했다.

그리고 성인부 대상을 받았다(?)

이번 대회는 ICPC나 SCPC와 달리 대회 중간에 답안을 제출해도 맞았는지 여부를 알려주지 않아 결과 발표 전까지 본인 점수를 확신할 수 없었다. 막연히 “그래도 19문제쯤 제출했으면 뭐라도 하나 건져가지 않을까”라는 생각은 했지만 대상까지는 예상을 못했기에 이름이 불렸을 때 꽤나 놀랐다. 나중에 알고보니 대회 운영진에게는 실시간 스코어보드가 보였는데, 대회 초반까지는 내 이름이 순위권에 없다가 점점 올라가더니 끝나기 10분 전에 2등(당시까지 1등)을 제쳤다는 말을 들었다.

사실 이날 세종대에서 ICPC 서울리저널이 있었고, 이데일리는 현역 대학생들은 대부분 빠진 빈집털이(…)가 된 꼴이라 어디가서 1등이라고 자랑하기는 약간 민망하다. 그래도 대회 마지막까지 던지지 않고 계속한 게 결국 +100만원이라는 의미있는 결과를 냈다고 생각하면 꽤 보람있는 대회였다.(어쨌든 내가 상받으면 좋은 대회)