<

CP/대회 후기

SCPC 2024 Final 대회 후기

leedongbin 2024. 9. 10. 01:24

430/1500점을 받았다..!

올해는 교내대회 일정이 작년보다 앞당겨진데다가 주관도 또 바뀌어서, 문제 출제/검수, 미팅, 인수인계 등을 하느라 바빴다. 여기에 졸업작품도 같이 진행 중이라 거의 대회 연습을 못했는데, 마지막 기회에서 기대보다 높은 점수를 받아 정말 너무 기쁘다. 교내 수상을 제외하면 드디어 무관에서 탈출했다!


준비 과정

삼성 하계 알고리즘 특강에서 평일마다 주어지는 과제 문제를 위주로 엄청 열심히 풀었다.
내실을 다지자는 작년의 피드백을 되새기며, 과제 문제를 자력으로 풀었어도 코치님의 코드를 꼭 읽었다. 덕분에 메모리 풀 등의 최적화 기법이나 몰랐던 문법들을 배울 수 있었고, 자료구조를 다루는 실력이 많이 향상된 것 같다.
그래서인지 LGCPC를 연습하면서 만났던 구현 문제도 무리없이 금방 풀 수 있었다.

나는 작년 커트라인이었던 문제가 플래티넘 중반 정도의 난이도라고 생각했고, 비슷한 난이도의 dp와 segtree 문제들을 골라 연습했지만 생각보다 빠르게 풀리지 않아서 자신감이 떨어졌다.

그런데 다른 분들의 대화를 들어보니 커트라인이 그 정도는 아니었나 보다.. 그래서 그냥 작년 문제가 나랑 안 맞았다고 생각하기로 했고, 플래티넘 하위 문제들로 연습했다.

대회 전날 이 문제들을 풀었는데 다 무리 없이 금방 아이디어가 떠올랐고, 마지막 문제는 작년쯤 못 풀고 버린 문제였는데 풀이가 바로 생각나서 자신감이 약간 복구됐다. 몇 번 맞왜틀이 있었지만, 자신감이 복구된 영향인지 풀이에 대한 의심을 하기보다는 코드와 지문을 다시 읽었다. 결국 지문에서 읽지 못한 조건을 찾아 해결됐고, "내일은 내 논리가 맞다고 생각하면, 무조건 실수를 의심하자."라는 피드백을 하고 새벽 2시에 늦은 잠에 들었다.

평소에 쓰는 IDE인 Clion이 가상환경에 없어서, 예비소집 때 visual studio로 테스트했었다.
stdc++.h 파일의 위치를 몰라서 헤더를 일일이 쓰려고 했는데, 자고 일어나니 윗글을 발견했고 황급히 세팅 연습을 해본 결과 bits/stdc++.h를 쓸 수 있게 되었다! 이런 사소한 점도 지금 보면 꽤 운이 좋았던 것 같다.

대회 시작 직전에 이분 매칭이나 타잔 알고리즘 같은 걸 외울까 하다가, 그냥 codeground 아이디랑 개발환경 세팅 방법, 세그먼트 트리 구현 정도만 외워놓고 입장했다.

작년에 부숴 먹은 선풍기를 기억하며 올해는 방 온도 관리에 신경 썼는데, 방문을 열어둘 수 없어서 아쉽게도 에어컨 바람은 들여오지 못했다.


본선 시작

1번 문제는 작년처럼 무난했고, 긴장한 탓에 머리가 꼬여 잠깐 헤맸지만 마음을 다잡고 금방 풀었다.

배점 순서대로 2번 문제로 넘어가서 몇십 분 정도를 고민해봤는데, 핵심 관찰이 잘 떠오르지 않았다. 만점자가 빠르게 늘어나지도 않아서, 일단 다른 문제 부분 점수를 긁어볼 생각으로 3번 문제로 넘어갔다.

그런데 2번 문제와 다르게, 고민하면 할수록 점점 케이스가 일반화되고 생각에 유의미한 발전이 있었다.(뭔가 계단식으로 문제가 점점 풀려나가는 느낌이 들었다.) 그래서 2번 문제를 버리고 3번 문제에 집중했다.

대회가 절반쯤 지나간 시점에 첫 코드를 제출했는데, 부분점수도 긁히지 않았다. 이제는 2번으로 돌아가서 만점을 받는다 해도 수상이 힘들 것 같았고, 마음이 싱숭생숭해서 잠깐 2번 문제를 고민해봤는데 진전이 없긴 마찬가지였다. 스코어보드에 3번 문제의 만점자가 거의 없긴 했지만 스코어보드에 연연하지 말자는 작년의 피드백을 떠올렸고, 더 가능성이 보이는 3번 문제에 전략적으로 올인하기로 마음을 굳혔다.


A4용지 1장 반이 가득 차도록 무수히 점을 이었고, 드디어 놓치고 있던 마지막 관찰을 떠올렸다. 수많은 검은색 점들 사이에 갈겨쓴 저 파란색 문장 하나가 수상으로 가는 열쇠이길 기도하며 코드를 작성했고, 제출했지만... 오답을 받았다.
아직 찾지 못한 반례가 있나 걱정도 됐지만, 나를 믿고 어제의 피드백을 떠올려 구현 실수를 먼저 찾아봤다. 다행히도 정말로 구현 실수가 있었고, 그 부분을 고쳤더니 한 번에 만점을 받았다!

이때부터 손이 약간 떨리고 집중이 잘 안 됐는데, 시간도 얼마 남지 않았기 때문에 일단 들뜬 마음을 가라앉혔다. 그리고 시키는 대로 구현만 하면 가져갈 수 있는 점수들을 모으기 시작했고, 대회종료 3분을 남기고 총 30점을 추가로 긁었다.


시상식

5등상까지는 꽤 안정적인 점수라 생각했지만, 4번의 120점 풀이가 꽤 풀만 했다는 이야기를 듣고 행복회로와 절망회로가 같이 돌아갔다. 시상식까지 기다리는 일주일이 너무도 길었다. LGCPC의 본선 일정과 겹쳐서인지, 시상식 참여 여부를 묻는 전화를 받았다.

올해 시상식도 ifland에서 진행되었다. 일정이 변경되진 않았는데, 생각보다 참여하지 않은 사람이 많아 아쉬웠다.

시상식은 위 순서로 진행되었고, 문제풀이는 길지 않았다. 드디어 수상자가 발표되었고...

4등상에 내 이름이 올랐다. 이름을 보자마자 그냥 펑펑 울었다. 이번이 막 학기라 진짜 마지막 기회였고, 정말 최고점의 last dance를 추고 떠나게 되어 너무 행복했다. 살면서 좋아서 눈물이 난건 이번이 처음이었던 것 같다. rdd6584님께 정말 많은 도움과 동기부여를 받았고, 명예의 전당에 선배의 발자취를 따라 이름을 남기게 되어 너무 기쁘다.

뒤이어 치킨 이벤트가 진행됐다. 작년에는 수상자를 제외하고 추첨했는데 올해는 전체 추첨이었고, 또 당첨됐다. 뭔가 대회에서 치킨을 받는 운이 좋은 것 같다.

이후 단체사진을 찍으며 시상식이 마무리되었고, 여운이 남아 돌아다니다가 여름 특강 라이브 강의에서 뵀던 교수님을 찾아 인사 모션을 취하고 나왔다.


후기

이번 대회에서 얻은 정말 소중한 두 가지 사실이 있다.

  1. 스스로를 믿어야 한다.
    최근에 현대모비스, LGCPC, UCPC등의 대회에서 연이어 떨어지다 보니 자신감이 많이 떨어졌었다. 자신감이 떨어지면 일단 목적의식이 떨어져 PS, CP에 대한 흥미 자체가 줄어든다는 점에서도 문제가 되지만, 대회 중에도 내 논리를 믿지 못했다면 존재하지도 않는 반례를 찾는 데 많은 시간을 낭비했을 것이다. 실제로 3번을 푸는데 대회 시간의 대부분을 사용했고, 마지막 20점을 긁은 건 대회종료 2분 전이었다. 스스로를 믿지 못해 버리는 시간이, 실제로 점수에 영향을 끼칠 수 있다.

  2. 경험은 정말 중요하고, 피드백이 반드시 뒤따라야 한다.
    • 이때까지만 해도 군대에서 구성적, 애드혹 문제만 푼 걸 후회했었는데, 오히려 3번 문제를 풀게 해준 무기가 되었다. 언제, 어디서, 어떤 경험이 빛을 발할지 모른다.
    • 만약 이번이 첫 SCPC였다면, 3번을 풀다 불안감에 휩싸여 2번으로 돌아가길 반복하다 이도 저도 풀지 못했을 것이다. 3번 문제의 만점을 받고 나서도, 2번 문제의 만점 풀이를 고민하지 않고 바로 부분점수만 긁은 것도 작년 피드백에 기반을 둔 좋은 전략이었다. 스스로 실력이 부족하다고 느끼더라도, 일단 도전해보면 뭐라도 얻어갈 수 있다.
    • 꼭 대회가 아니더라도, 기본 실력을 올리는 가장 좋은 방법 역시 피드백(upsolving 등)인 것 같다. 귀찮은 건 사실이지만, 코딩테스트 실력을 쌓거나 코드포스 레이팅을 올릴 때에도 반드시 필요한 과정이라고 생각한다.

이번 SCPC 2024에서 느낀 감정들은, 앞으로 살아가는 데 큰 도움과 버팀목이 될 것 같다.

 

마지막으로 좋은 대회 열어주신 SCPC 운영진분들께 진심으로 감사드립니다!