대학생 프로그래밍 경시대회라고 불리는 ACM ICPC에 처음으로 출전해봤다. 인터넷 예선이 오늘이었는데, 총 8문제 중 4문제는 쉽고 4문제는 어려웠다. (나중에 결과를 보니 3~4문제를 푼 팀이 거의 대부분이고 5문제 이상 푼 팀은 10팀도 안 되었다. 전체 참가 팀 수는 200팀 정도.)
모르시는 분들을 위해 :
ACM ICPC에 대하여
초/중/고등학교에 정보올림피아드가 있다면 대학생들에게는 ACM ICPC가 있다고 보면 된다. 주어진 시간 내에 주어진 문제들을 많이 풀수록, 또한 더 빨리 풀수록 등수가 올라간다. 인터넷 예선 - 서울 지역 대회 - World Final의 3단계로 진행된다.
이번 대회의 경우 한 학교에서 인터넷 예선에 n개의 팀이 출전하면 n/2에서 올림한 수만큼 서울 지역대회에 나갈 수 있다. 한 팀은 3명으로 구성되며, 대회 중에는 반드시 1대의 PC만을 사용해야 하고, 다른 전자 매체 및 인터넷 자료 참조(언어별 reference는 가능)는 금지된다. 대신 인쇄한 소스코드나 각종 책 등은 제한 없이 참조할 수 있다. 사용하는 언어는 C/C++/Java이며 세계 대회에서는 Python 등도 사용할 수 있다. (그러나 Python은 다른 언어에 비해 다소 느리기 때문에 시간복잡도의 extra optimization이 필요한 경우도 있다고 함)
공식 홈페이지 :
http://acm.kaist.ac.kr
어제 예비소집 때 미리 개발환경 세팅을 했으나, 윈도우 사용자 계정 차이로 인해(그때는 관리자 암호를 알고 있는 사람이 있어서 관리자 계정으로 했으나 실제 대회 때는 일반 사용자 계정으로 했다) Java runtime의 PATH 설정이 꼬이기 시작하더니 Eclips에서 컴파일 후 실행이 안 되는 사태가 발생하여 (다행히) 미리 세팅해둔 cygwin을 이용해 대체 실행을 하는 등 초반에 삽질을 좀 해주었다.; 덕분에 갑자기 긴장해버린 탓인지 엉뚱한 실수를 많이 해서―디버그용 메시지 출력하는 코드를 submit해서 wrong answer를 받는다든가―시간을 많이 오버했고, D번 문제를 풀다가 문제를 잘못 생각하는 바람에 답은 나오지만 시간복잡도가 큰 알고리즘을 내버려서 결국 time limit exceed 받고 3번까지밖에 못 풀었다.
4번까지 제대로 풀었다면 아마도 전국 팀순위 51등 정도 하지 않았을까 싶다. 그래도 갑자기(-_-) 나가게 된 것에 비하면 괜찮은 결과였고, 내년에 다시 나간다고 했을 때 어떤 것들을 중점적으로 준비하면 될 지 알 수 있었다. (다음 번엔 꼭
SP Spirit으로 팀 이름을 정할 것이다. -_-) 일단 이번 학기 Problem Solving과 다음 학기 Algorithm 과목을 잘 들어두고, 여름학기 때 약간의 연습을 해준다면 인터넷 예선까지는 어떻게 통과가 가능하지 않을까 싶다. (그럼에도 불구하고, 워낙 KAIST 자체가 국제정보올림피아드 출신 등 상당한 실력자들이 많아서 쉽지는 않을 듯하다. 이번에 같이 출전한 팀 중에 한 팀은 인터넷 예선 1등.. 알고보니 3명 다 IOI 출신. -_-;;)
그러나 한 가지 가능성을 느낀 건, 비록 중고등학교 때부터 특출한 실력을 발휘했던 사람들일지라도, 내가 체계적으로 배우고 노력함으로써 어느 정도는 따라갈 수 있다는 점이다. 중고등학교 때라면 꿈도 못 꿨을 것 같은 알고리즘 설계와 그에 관한 geek스러운(-_-) 대화들이 이제는 꽤 자연스럽게 생각되는 걸 보면 말이다. 잘 했든 못 했든 이런 대회에 참여하는 것은 그 자체로도 흥분을 가져다주기 때문에 한 번쯤 경험해볼 만한 일이다. 이번에 유독 KAIST 참가자들이 적었는데 내년엔 좀더 많은 팀들이 나와주었으면 좋겠다. (그래야 다시 도전했을 때 예선 통과할 확률도 높아질 것이고. :)