서론

매년 프로그래밍 대회가 교내에서 열린다. 이번이 벌써 11번째라고 한다. 본교 졸업생 분들이 직접 문제를 출제해주시고, 대회 참가자들이 그 문제를 푸는 방식이다.

겨울방학부터 계속 알고리즘 공부를 했고, 한 번 대회에서 어느정도까지 올라갈 수 있는지 궁금해서 참가했다.

본론

팀구성

대회 신청은 1학기 종강할 때 쯤(?) 받기 시작했다. 3인 1조로 팀을 구성해야 했다. 자바를 사용하기 때문에 주변에 자바를 사용하는 사람을 우선 찾았다. 하지만, 자바는 아무도 보이지 않았고 대부분 파이썬을 사용했다.

결국은 자바 1, 파이썬 2로 팀을 구성하고 대회 참가 신청서를 냈다. 파이썬을 공부하겠다고 말을 하고, 정작 공부를 하지 못 했다. 당시 동아리 백엔드 비기너 과정이였기 때문에, 파이썬보다 자바를 사용하는 상황이 너무너무너무 많았기 때문이다. (개인적으로 파이썬에 애정이 안 가는 것도 한몫했다)

스터디

팀 구성원들과 알고리즘 대회 준비를 위해 스터디를 진행했다.

개인적으로 하나의 알고리즘을 한 주 동안 잡고, 공부한 내용을 개인 저장소 라는 페이지에 회고 형식으로 작성했다. 알고리즘 목록은 교내 소모임 씨앗 커리큘럼을 참고했다.

다들 열심히 스터디에 참여해줬다. 다만 중간에 삼성 알고리즘 캠프에 참여하게 돼서, 공부를 소홀히 했던 것이 반성해야 할 점이다.

대회 시작 전

토요일에 대회가 열리기 때문에, 아르바이트 오전만 하고 학교로 넘어갔다. 넘어가기 위해 버스를 타야하는데, 버스가 안 와서 학교까지 뛰어갔다.. 뛰어오다가 버즈도 잃어버려서 대회 시작부터 쉽지 않았다.

다행히 버즈는 찾았다 ! (삼성 짱)

대회 시작

문제는 총 12문제였고, small-large로 구성된 문제도 있었다. 작년 문제를 봤을 때 올해 한 문제라도 풀 수 있을까? 생각을 했는데, 다행이도 풀 수 있는 문제가 몇몇 있었다.

처음 문제지를 받았을 때 서로 어떻게 해야 할지 갈팡질팡했다. 다들 처음이기 때문이다. 그래서 문제지를 순서대로 하나씩 나눠줬다. 그리고 문제 풀이 방법이 생각이 나면 각자 컴퓨터를 잡고 구현하기로 했다. 유튜브에서 본 영상에서 이렇게 하길래 따라 했다.

구현, 트라이, dp, 그래프 등등 익숙한 알고리즘을 이용해서 푸는 문제가 많았다. (dp는 손도 못 댔다) 문자열을 가지고 노는 문제는 파이썬 친구들에게 맡겼다. 자바로 문자열 split하다가 시간을 다 갈 거 같았기 때문이다. (파이썬 짱)

마지막에 내가 들고 있던 문제가 그래프 문제였다. 그래프에는 자신이 있다고 생각해서 잡았고, 문제를 봤을 때는 dfs 쓰면 풀릴 거 같았다. 하지만 뭔지 모르겠는 데 안 풀렸다. 구현력이 부족했다고 생각을 하고 결국 해결은 못 했다. 다시 생각해보면, 족보를 받은 것을 리스트로 유지할까 라고 생각했을 때 union-find를 생각했어야 했는데 못한 점이 아쉬웠다.

대회 종료

대회가 끝나고 학교에서 제공해준 피자와 치킨을 먹으면서, 프리징된 스코어보드를 보면서 순위 발표를 봤다. 실시간으로 순위가 올라가고 내려가는 보는 재미가 있었다.

E번 문제는 그리디로 푸는 줄 알았는데, 문제 해설을 보니 투포인터로 푸는 문제였고 그제서야 이전에 풀었던 문제가 생각이 났다. 저거만 맞췄으면 9솔이였는데,, 아쉽다

J번도 조금만 더 생각했으면 풀 수 있었을 거 같은데, 해설을 보면서 아쉬운 마음만 들었다.

마무리

처음 참여해본 알고리즘 대회치고 잘 선방했다. 아쉬운 점도 있었지만, 엄청 재미있었고 좋은 경험을 할 수 있었다.

중간에 참여한 삼성 알고리즘 캠프, 알고리즘 스터디 그리고 꾸준히 풀어온 백준도 도움이 많이 됐다.

내년에도 기회가 된다면 더 성장한 모습으로 참여해서 좋은 결과를 얻고 싶다.