ACPC 2021 예선 Open Contest
온라인 저지 백준( https://www.acmicpc.net/ )을 통해 ACPC 2021 예선 Open Contest에 참여해 봤다. 나로서는 학교 프로그래밍 과목 시험 때를 제외하고, 처음으로 시간 제한을 두고 여러 문제를 풀어내야 하는 환경에 노출되는 경험이었다. 10개의 문제와 3시간이 주어지는데, 최대한 많은 문제를 풀어내야 했다.
# 이기지는 못 했지만 잘 싸웠다.
첫 번째 문제 'A - 수학은 체육 과목입니다 3'을 애드 혹이라 지레짐작하고 풀려고 하니 숫자가 나열되는 방식의 경우의 수가 너무 많았다. 그것을 하나하나 다 반영해서 조건문을 설정하다 보니 어느덧 1시간이 넘게 경과된 시점이었다. 그렇게 시간을 써먹고 나서야 이게 삽질이라는 것을 깨달았다. range함수를 통한 iteration의 도움을 받아 문자열을 형성하고 주어진 입력값과 비교하면 되겠다는 생각이 들었고, 그 코드를 짜는 데에는 5분도 채 걸리지 않았다. AC 처리를 받고 몰려드는 허탈감을 안고 두 번째 문제로 향했다.
두 번째 문제 'B - 항체 인식'은 암만 봐도 깊이 우선 탐색(DFS)의 냄새가 났다. 단지 내가 여태껏 풀어왔던 dfs 문제들은 주어진 조건에 따라 공간이 변화하는 양상과 관련하여 특정한 해를 구하는 문제였는데, 이번의 문제는 초기 상태와 변화된 상태가 주어지고 조건에 맞는 변화인지 아닌지를 판별하는 문제라는 점에서 차이가 있었다. 결국 조건에 맞지 않는 그 상태들을 다 고려해볼 수밖에 없었다. 이 지점에서 딜레마를 가장 크게 경험했는데, 내가 짠 로직의 완결성을 검사할 것이냐 시간을 아낄 것이냐 하는 딜레마였다. 결국 나는 시간을 아끼고자 무지성 제출하기를 눌렀고, 틀릴 때마다 내가 놓친 경우의 수를 반영해 코드를 수정했다. 5번째 도전만에 AC 처리를 받았다. 이때는 좀 기뻤다 ㅎㅎ.. 만약 제출횟수가 1회로 제한되어 있었다면, 내 로직에 오류나 흠결이 존재하는지의 여부를 내가 직접 검증할 수 있었을까 하는 의문을 남겨두고, 세 번째 문제로 향했다.
세 번째 문제 'C - 헤이카카오'는 확률 문제였다. 확률 계산식은 간단했으나, 반복문 블럭 안의 코드로 구현하는 데에 약간의 부침이 있었다. 난이도에 비해 오랫동안 우여곡절을 겪은 끝에 AC 처리를 받고 네 번째 문제로 향했다.
그리고 다섯 번째 문제로, 여섯 번째 문제로, ... , 열 번째 문제까지 다 돌아봤다. 남은 시간은 15분. 네 번째 문제가 제일 할 만 하겠다 싶어서 달려 들었다. 풀지 못했다. 시간이 종료되었다. D~J 문제 모두 내가 더 공부해야만 풀어낼 수 있다는 첫인상을 주었다. 첫 번째 문제에서 헤맸던 게 그렇게 큰 손해는 아닌 것 같다는 생각이 그때부터 들었다.
# 결과
정답률 - A : 50.633% // B : 37.634% // C : 78.788%
3시간 동안 7문제를 풀어낸 굇수들을 보며 참 많은 자극을 받았다. 내 결과에 대한 기대 없이, '많은 문제를 건드려 보기 보다는, 한 문제라도 제대로 풀어보자'는 마인드로 임했기에 B번 문제를 끝까지 물고 늘어질 수 있었다고 본다. 내 실력만큼 결과가 나온 것 같아 뿌듯하다.