준비
2023년, BRIDGE에서 귀인의 권유로 알고리즘 스터디에 참여하게 되면서 본격적으로 알고리즘 문제 해결을 취미로 삼게 되었다. (Shout out to Sim)
2024년, 1년간의 공백기를 거친 후 2025년 3월부터 2025 인하대학교 프로그래밍 경시대회(이하 IUPC)를 본격적으로 준비하기 시작했다.
1년 동안 컴퓨터를 거의 켜지도 않았던 터라, 완전히 바닥부터 다시 시작해야 했다.
사실 학기 초에 과 내 알고리즘 학술 소모임인 CTP에 들어가고 싶었지만, 활동 직전에 일정이 변경되면서 이번 학기에는 함께하지 못했다.
다행히 주변에 또 다른 귀인이 있어 방향성을 제시받아 나아갈 수 있었다. (Shout out to Moon)
당장의 목표는 빠르게 준비하여 IUPC 10위 안에 들어 입상하고, 경인지역 연합 프로그래밍 경시대회 (shake!) 참가 자격을 획득하는 것이었다.
두 달간 나름 열심히 준비했다. 잊어버린 내용들을 다시 익히며, 멘토의 권유로 코드포스도 시작하게 되었다.
BOJ에서는 난이도를 숨긴 채 IUPC 기출을 포함한 여러 문제들을 풀어보며 감을 익혔다.
B5~G4는 대체로 무난하게 풀렸고 G3~ G1은 힘겹게 풀거나 풀지 못하는 경우도 많았다.. P5부터는 나와 정말 잘 맞는 문제의 경우에만 간혹 풀 수 있었다.
2024 IUPC 기준으로 12문제 중 빠른 6솔브가 수상 커트라인이었기 때문에 7솔브를 목표로 잡았다.
대회
시작 전부터 작은 이슈가 있었다.
팀 노트를 단면으로 준비해야 했는데, 양면으로 출력해 온 것..!
어쩔 수 없이 땡볕을 가로질러 다시 출력해 왔다. (근데 결국 안 썼음)
시험장인 강당은 넓고 쾌적했다. 뒤편에 요깃거리도 많길래 자리로 몇 개 챙겨갔다.
그렇게 고요한 적막 속에서 나의 첫 대회가 5시간에 걸쳐 막을 올렸다.
A번. 인경호 울타리 공사
C번까지는 쉬운 문제 고정이었기 때문에, A번부터 차례로 풀기 시작했다.
그런데 시작부터 기하처럼 보이는 문제가 등장해서 느낌이 좋지 않았다.
"각 울타리의 x2-x1 y2-y1 .. 거리를 측정해서 마름모 공식으로 .." 이러고 있었다.
10분 정도 고민하다가 남들은 다 풀길래 조급해서 일단 넘겼다.
B번. 신묘마루의 요술망치
다행히 B번은 보자마자 간단한 구현 문제임라는 것을 알 수 있었다.
얼른 손가락을 움직였고, 총 10분 정도 소요되어 대회 시작 20분에 첫 AC를 받았다.
C번. 쿠키런
간단한 그리디 문제로 보여 바로 구현 후 제출했는데 WA를 받았다.
다시 문제를 읽고 생각해 보니 사소한 부분을 하나 놓치고 있었다.
바로 수정해서 대회 37분에 두 번째 AC를 받았다.
D번. 인덕이와 보드게임
대회가 약 40분 진행된 시점이었기에 스코어보드를 어느 정도 참고할 수 있었다.
일단 문제가 길고, 푼 사람도 보이지 않았기 때문에 바로 스킵했다.
E번. 나이트 오브 나이츠
문제를 보자마자 N-Queen과 비숍이 생각났다.
브루트포스 + 백트래킹을 떠올렸는데, N이 4임을 보고 확신하여 바로 구현했다.
대회 57분경 제출하여 세 번째 AC를 받았다.
이후 문제들을 조금씩 훑어보다가 A번을 봤는데 갑자기 풀이가 보여서 제출했고 67분에 네 번째 AC를 받았다.
F번. 예쁘게 출력한 이진 트리
푼 사람도 없었고, 그림부터 쉽지 않아 보이길래 스킵했다.
G번. 삼각형 수열
마찬가지로 푼 사람도 없었고, 파스칼 삼각형 같은 그림이 있길래 무서워서 스킵했다.
H번. 체크박스 누르기
문제와 그림, 제한이 10^9인점을 보아 수학 문제 같았는데 바로 보이지는 않아서 잠깐 보다가 스킵했다.
I번. 인경호 확장판
딱 봐도 난이도 좀 있는 기하 문제 느낌이라 버렸다.
J번. 인덕이와 산책
문제의 J번이다. 일단 상위권 2-3명 정도가 풀었고, BFS 풀이가 추상적으로 떠올라서 시도해 봤다.
한참 고민을 하다가 제출을 했는데 결과는 MLE였다.
이후 몇 가지의 수정을 거쳤지만 결과는 마찬가지.
여기서 2시간을 허비하여 대회 시각 3시간이 경과했다.
멘탈이 박살 난 후 다음 문제로 넘어갔다.
K번. 징검다리의 징검다리
그리디하게 접근이 가능할 것 같았다. 바깥쪽 호수로 갔다가 돌아오는 과정에서 돌이 한 개인경우 예외가 발생하는 것까진 생각했는데, 조건 분기가 많이 생길 것 같아 겁먹고 스킵했다.
L번. 두 괄호 문자열
딱 봐도 지금은 풀 수 없는 문제 같아 넘겼다.
이후 스코어보드를 참고하니 초반에 넘겼던 D번을 몇 명이 풀었길래 잡아봤다.
시간 복잡도 계산을 잘못해서 대회 시각 3시간 40분경 TLE를 받았고, 심장이 조여오기 시작했다.
곧 스코어보드가 프리징 되었고 당시 순위는 9위.
너무 불안했다.
다행히 DP점화식을 유도해내서 첫 제출 40분 후 다섯 번째 AC를 받았다.
하지만 이미 많은 이들이 프리징 이후 추가 제출을 한 상황이라 안심할 수는 없었다.
35분 남은 상황 문제의 J번을 계속 시도해 보았지만 세 번의 WA를 더 받고 그대로 대회가 마감되었다.
결과
총 5솔브를 하며 동상(7th)을 수상했다.
대회가 끝나고 돌아보니 반드시 풀어야 하는 문제를 두 개 못 풀었고, 충분히 풀 수 있을 만한 문제도 두 개나 못 풀었다.
실망스러운 퍼포먼스였지만 목표였던 수상과 shake! 시드권을 얻었으니 만족한다.
이후
아직 많이 부족하지만 이미 발을 담근 이상 올해는 열심히 해봐야겠다.
팀이 없어서 UCPC와 ICPC는 나갈 수 있을지 모르겠다. (친구가 없다)
혹시 저와 비슷한 실력에 관심 있으신 분은 연락주세요..
shake! 전까지는 코드포스 민트에 도달할 수 있도록 꾸준히 노력해볼 생각이다.
너무너무 보람차고 재밌었다.
'잡담' 카테고리의 다른 글
[잡담] ChatGPT 사용기 (2) | 2022.12.10 |
---|