<

CP/대회 후기

2024 ICPC Seoul Regional 예선 후기

leedongbin 2024. 11. 2. 20:06

52위로 본선 진출!

Team PS Tactics 팀원이 모두 학교를 떠났다. ㅜㅜ 그래서 욕심을 버리고 그냥 편한 분위기에서 대회를 치르고 싶어서, 지인들 위주로 연락해 팀을 만들었다. (squid0412, gwanwoopa, leedongbin)

기준이 살짝 바뀌었다고 들었는데, 인천대학교에선 유일하게 출전했다 보니 별로 걱정되지는 않았던 것 같다. 보통 예선은 커트라인이 높지 않고, 연습할 때 커트라인 급의 기출문제들을 푸는데 큰 무리가 없었다. 오프라인 대회에서 유독 긴장을 많이 해서 구현에서 말리면 뜬금없이 골드 하위에서 헤매기도 하는데, 그 정도는 팀원들이 커버해줄수 있었고 이번에는 가벼운 마음이라 긴장되는 느낌도 없었다.

대회 당일에 팀원 중 한 분이 중간고사 시험이 있었는데, 조기 제출까지 하고 대회 장소로 달려와 주셔서 열심히 해야겠다 생각했다.

팀노트는 작년에 쓰지 않아서 올해도 만들지 말까 하다가, feary 수열의 아픔이 떠올라서 뭐라도 생각나는 대로 적었다. 각종 알고리즘 기본문제의 코드를 그대로 복붙해서 급조했는데, 적당히 24페이지가 나와서 이대로 들고가기로 했다.


타임라인

  • 0:12) E AC
    한글 문제를 읽으면서 스코어보드 First Solve를 기다렸다. 어렵지 않은 구현 문제였고, 금방 AC를 받았다.

 

  • 0:39) H TLE*1, AC
    한눈에 백트래킹 문제라는 직감이 왔고, 동시에 구현이 너무 귀찮아 보였다. 서로 다른 수라는 조건을 나만 못 봐서 약간 헤맸다. 구현을 줄이기 위해 굳이 관찰을 더 하기보다는 그냥 노가다를 빨리하고 넘어가자고 생각하고 짰는데 답이 잘못 나왔다. 팀원이 오타를 발견해줘서 금방 고쳤지만 TLE를 받았고, 적당히 가지치기를 해주니 AC를 받았다.

 

  • 1:21) F AC
    유니온파인드인지 이분 그래프인지 뭔가 이상한 고민을 하고 있었는데, 마침 최근에 선분 교차 문제를 풀었던 팀원이 CCW로 잘하면 될 것 같다는 얘기를 해주셨다. 풀이를 들어보니 너무 맞는 말이었고, 다행히 팀노트에 점 분리 코드를 적어놔서 구현은 직접 했다. (거리,각도)로 표현된 점을 (x,y)좌표로 변환해야 는데, 갑자기 마음이 급해져서 분모에 뭘 써야 할지 생각이 안 났다. 팀원들이 차분한 말투로 멘탈을 케어해줘서 금방 정신을 차렸고, 다행히 AC를 받았다.

 

  • 1:30) 
    이때쯤 C, G가 비슷하게 풀려있던 것 같다. 그래서 양쪽 문제를 번갈아가면서 보다가, C가 kmp + dp로 풀릴 것 같다는 생각이 들어서 내가 C를 잡고 팀원에게 G를 맡겼다. kmp는 gwanwoopa님이 적어둔 코드밖에 없어서, kmp를 만나면 항상 대체해왔던 라빈카프 알고리즘을 팀노트에서 가져와 열심히 풀었다.  

 

  • 2:49) C WA*5, AC
    해싱+이분 탐색+dp를 잘 섞어서 이것저것 하다가 예제가 나오는 코드를 짰는데 WA를 받았다. C를 버리고 G에 붙어볼까 하다가, C를 조금만 더 하면 될 거 같다는 생각과 G의 풀이를 완성하는데 오래 걸릴 것 같다는 생각에 C에 올인하기로 했다. 여러 번 WA를 받다가 시간이 많이 흘렀고, 스코어보드를 보니 C를 못 풀어도 일단 본선 진출은 확정인 듯 보였다. 그래서 편한 마음으로 C에서 온몸 비틀기를 시도했는데, 똑같은 작업을 시간제한에 걸리지 않을 정도로만 여러 번 반복하게 시켰더니 AC가 나와버렸다. 기분이 좋으면서도, 뭔가 찝찝했다.

 

  • 3:00)
    딱히 더 풀 시간이 없어서, 스코어보드를 구경했다.

결과 / 후기

찝찝함은 단지 기분 탓이 아니었는지, 대회 당일 밤에 디스코드 icpc 채팅창이 엄청나게 불탔다.
대화 주제는 크게 1) 간단한 반례에 많은 AC 코드가 터져나간다는 것과, 2) 상위팀의 맞왜틀이 유독 많다는 것이었다. 반례를 넣어보니 우리 팀 코드도 터졌다. (실패 함수가 필요해서, kmp를 해싱으로 대체하는 풀이 자체가 잘못된 듯하다.)
데이터 부족은 종종 있는 일이지만, 만약 데이터 오류라면 어떻게 판정할지 궁금했다.

공지는 금방 올라왔고, 최선의 대처를 했다는 반응이 많았다.

재채점 전/후. 44위→52위로 밀렸다.

결과적으로 C번이 틀린 풀이이긴 했지만, 처음 구성한 팀치고는 케미가 아주 좋았고 무엇보다 팀노트 덕을 엄청 많이 봤다. 본선에 기념품이라도 챙기러 가보자는 뜻으로 팀 명을 'KINTEXTour'로 지었는데, 이름값은 해서 다행이다. 본선에 갈 때는 팀노트를 성의있게 다듬어가야겠다.

학교에서 매년 icpc에 한팀밖에 출전하지 않는 게 내심 아쉬운데, 내년에도 본선에서 인천대학교를 볼 수 있길 기대해본다.