Computer Science/Problem Solving

2023 ICPC Korea regional 인터넷 예선 후기

리유나 2023. 10. 23. 20:18

리유나입니다. 오랜만입니다.

 

현생 이슈로 PS를 정말 잘 못하고 있었는데, 그래도 ICPC는 나가야 하니깐,,, 매주마다 팀연습 하면서 감을 살리고 토요일에 ICPC 예선을 치르고 왔습니다! 팀은 작년과 그대로인 MunSongSong Eggdrop(문송송 계란탁)입니다.

 

스코어보드

우선 최종 스코어보드는 교내 2등, 전체 4등 했습니다! 사실 프리즈 이전에 2등이었는데 그뒤로 쭉 말려서 아무것도 못했던 게 뼈아프네요 ㅠ

 

타임라인

대강의 타임라인은 다음과 같았습니다.

 

(시작 전) 대회 운영 측의 문제로 인쇄된 문제 종이가 늦게 도착한다는 공지를 받고 멘붕... 하는 수 없이 한문제씩 셋이서 다같이 읽으면서 풀기로 했습니다.

 

(9분) 대강 훑으면서 C D G가 풀만한 문제인 걸 확인했고 D를 AC 받았습니다. 풀이는 간단하게, 1부터 10만까지의 숫자들을 쭉 체크하면서 그걸로 만들어지는 팰린드롬을 다 확인하면 여유롭게 시간 안에 통과 가능합니다.


(14분) 바로 C도 AC 받았습니다. % 단위로 출력해야 하는 것을 제외하면 문제될 게 없는 쉬운 문제였습니다.

 

(??분) 이때쯤에 비로소 인쇄된 파일을 받았습니다. 그런데...양면인쇄가 되어서 왔네요. 덕분에 이래저래 대회 내내 혼동이 좀 잦았습니다 ㅠ

 

(33분) 바로 G도 AC 받았....으면 좋았을텐데? 놀랍게도 두번이나 시간초과가 떴습니다. 0.5초라는 다소 빡빡한 제한에, 최적화를 할만큼 해도 잘 되지 않아서 다들 멘붕했는데, 1/2보다 작은 분수들만 생각하고 그 이상이면 반대로 세면 된다는 아이디어를 가지고 시간을 절반으로 줄여서 겨우 통과했습니다. 다른 팀들은 어떻게 처리했는지가 제법 궁금합니다.

 

(40분) 바로 K도 AC 받았습니다. 읽고 보니 할만한 문제 같아 보여서 mhy908에게 넘겼는데, 그냥 바로 슈슈슉 하고 짜버리더라고요. 저는 정확한 풀이 떠올리는데 약간 시간이 걸렸는데, 역시 이런 부분은 좀 더 공부하고 배워야겠다는 생각이 들었습니다.

 

(58분) 바로 I를 AC 받았습니다. 무려 퍼솔이었네요. 풀이는 (TBD)입니다.

 

(78분) J를 AC 받았습니다. 풀이는 (TBD)입니다.

 

(그 이후) 이쯤에서 스코어보드 1등이었어서 정말 다들 기뻐하면서 나머지 문제들을 확인했습니다.

 

A는 songC가 풀었습니다. 조건을 조금 더 확인하면 주어지는 그래프가 단순한 트리가 아니라 일자로 주어지는 path와 거기에 depth 1짜리인 곁가지들만이 나오는 특별한 형태인 그래프라는 것을 확인할 수 있었고, 그 조건이 있으면 쉽게 constructive하게 풀 수 있는 문제였습니다.

 

E는 케이스워크 잘 처리해야 하는 단순 기하 문제였고, 제가 풀이는 도출해놨으나 코딩 시간이 상당히 걸릴 것으로 보이는 문제였습니다.

 

F는 mhy908이 잡고 풀었는데 자료구조 문제라고 하더라고요. 정확한 풀이는 기억나지 않고, 사실 애초에 최종 결과가 WA였기 때문에 잘 모르겠습니다()

 

B는 노가다, H는 뭔가 대단한 아이디어로 cosntructive하는 문제라고 생각을 했고, 결국 남은 A, E, F를 풀고 1등을 굳히기로 했습니다.

 

(103분) A를 AC 받고 1등으로 올라섰습니다! 그러나 이때부터 대강 수난의 시작이었는데...

 

songC: B랑 H 풀이 고민중

저(runnie0427): E 풀이 정형화중

mhy908: F 풀이 완성

 

그래서 대강 이때쯤부터 mhy가 F를 짜기 시작했습니다.

 

(120분) F를 짜다가 시간이 걸린 mhy가 제게 컴퓨터를 토스했고, 저는 E를 짜기 시작했습니다.

 

(130분?) E에서 케이스 하나 덜 처리한 게 있는 걸 깨닫고 mhy에게 다시 F를 넘겼습니다.

 

(150분 이후) mhy가 F 코딩을 끝냈고, 디버깅을 하고 있었습니다. 이뒤로 테케도 전부 잘 통과하고 디버깅도 잘 했다....라고 생각했지만?? 끝날 때까지 WA만 두번 받고 마음이 꺾이기 시작했습니다.

 

(17x분) 모두 멘붕, 제가 짜다 만 E를 연막용으로 제출했습니다.

 

(180분) 대회가 끝났습니다. 프리즈 당시에는 2등이었지만 숭실대 ps악귀 팀이 E는 푼 것으로 보였고, 뒤에서 Final Round팀의 환호소리가 끝나기 15분전에 들렸는 것으로 봐서는 아무래도 4등이겠구나...하고 예상했고 실제로 결과가 그랬습니다.

 

후기

우선 문제 난이도 배치가 정말로 끔찍했던 예선 셋이 아니었나 생각합니다. 거의 17년을(solved 기준으로, 세번째로 쉬운 문제가 골5인데 네번째로 쉬운 문제가 무려 플3입니다...)방불케 하는 문제들이 어디서 튀어나왔고, 어려운 문제들은 그야말로 '니를 죽일끼다!'하고 학생들을 잡아먹고 다녔습니다. 그래서인지 대회 내내 스코어보드도 그렇게 재미있지 않았던 것 같아서 약간 아쉬웠습니다.

 

대회에 대한 평을 떠나 참가자로서 저 자신과 팀에 대한 평을 생각해본다면, 우선은 2년간 이어져 온 같은 팀이니만큼 팀워크가 제법 괜찮아지고 있었고, 이 케미가 전반적으로 작년에 비해서 좋은 성적을 가져온 게 아니었을까 싶었습니다. 이정도 순위권 팀들 중에서는 흔치 않게 오랫동안 유지된 팀이고, 그 기간동안 연습하면서 많이들 망치기도 하고 꼬이기도 하면서 서로의 장단점이나 전략을 잘 파악하고 있었다는 게 좋은 포인트였다고 생각합니다.

 

앞으로 이 기세를 이어나간다면(아마도 마지막이 될 제 icpc의)유종의 미를 거둘 수 있을 것 같아서 굉장히 뿌듯하지만, 그럼에도 아쉬운 점들도 있었습니다. 제가 강점을 발휘했어야 할 A 같은 유형의 construction 문제를 제가 아니라 다른 팀원이 풀었고, E는 풀이가 있었음에도 중간에 그 풀이가 미비했기에 보충하고 오는 사이에 대회가 끝났습니다. 결과론적인 이야기지만, 제가 E 풀이를 조금 더 깔끔하게 만들었고, 코딩 실력도 더욱 좋았더라면 E를 빨리해치우고 mhy에게 F를 넘겨줄 수 있었고, 그랬더라면 최소 2등인데 그러지 못했다는 것이 역시 아쉬웠습니다.

 

또한 팀원 세명이 모두 다 호승심이 강하고 끈기가 있는 편이라, 이게 오히려 한 사람이 키보드를 붙잡고 끙끙대는 역효과가 되어 대회 전체가 망한 경우가 팀 연습이나, 22 UCPC와 같은 대회에서 몇번 있었던 일인데, 이번에도 초반의 좋은 기세를 이어나가지 못했던 가장 큰 이유가 아무래도 이 부분이었던 점이 많이 아쉬웠습니다. 어찌 보면 저희 팀 최고의 약점인데, 본 대회날까지 이 부분을 계속해서 점검할 필요가 있겠습니다. 아울러, 마지막까지 꺾이지 않는 마음도 중요하겠네요.

 

그럼에도 4등이면 제 커리어 전체에서도 ICPC 예선 본선을 통틀어서 가장 좋은 성적이었고, 이 좋은 기세를 이어나가서 마지막 ICPC 대회를 좋은 성과로 마무리하고 싶습니다! 이제 중간고사도 끝났으니 잠깐잠깐씩이라도 다시 PS를 하고 열심히 팀연습을 하면서 본선 대회를 철저히 준비하고, 좋은 소식으로 찾아뵙겠습니다!

 

문제별 간략 풀이

(TBD)