2014 크리스마스 코드포스

오랜만에 코드포스를 쳤다. 그리고 오랜만에 블로그 업데이트도 한다. SNS에 글 올리기가 쉽다보니 SNS를 많이 쓰는데, 요즘 긴 글을 쓰는 연습을 하기 위해 블로그에 글을 쓸 필요성을 느낀다.

크리스마스날 새벽부터 코딩을 하고 있는데 아무 생각이 없다. 작년까지만 해도 뭔가 설레는 마음이 있었던 것 같은데 1년동안 무슨 일이 있었던 걸까.

이번에 레이팅이 Dynamic하게 매겨졌기 때문에 A부터 어려울 수 있겠다는 생각을 했고, 실제로 열어보고 ‘아 기하구나’라고 생각하고 던지고 B를 봤다. 하지만 B는 수학이었고 CDE를 읽기 전에 A로 회귀했다. 자세히 보니 기하는 기하인데 영역을 나누고 그래프를 만드는 대신 간단하게 직선으로 나눠진 영역에서 위치만 확인하면 풀 수 있어서 금방 코딩을 했다. #

그 다음에는 C를 잡았다. 처음에 이분 그래프 조건을 보고 이분 매칭을 위주로 생각을 시작했다. 수들을 이루고 있는 모든 소인수들을 독립적으로 분해해서 생각하는 아이디어를 기본으로 풀이를 진행시켰다. 처음에는 매칭으로 접근했는데 두 쌍 사이에 연결되는 매칭 수가 1이 아닐 수 있어서 플로우로 풀이를 변경해서 맞았다. 시간제한 있는 대회에서 플로우 써 보는건 처음인데 책을 참고해서 짰다. 스스로 좀 더 빨리 짤 수 있게 공부를 더 해야 할 듯. #

C를 풀었을 때 한 시간 정도 남았고 D를 잡았다. D에서 23456의 LCM을 계산해보니 60밖에 안 되서, 60 q log n이 얼마정도 되나 확인해봤더니 시간 내에 나올 것으로 예상되었다. 인덱스 트리를 이용해 코딩을 했는데 보통 bottom-up 방식으로 올라오면서 처리하는데 이건 순서가 중요하기 때문에 오른쪽에서는 올라올 수 없어서 쿼리문 처리를 독특하게 짰다. 대회 때는 못 풀었는데 끝나고 나서 디버깅 도움을 받아 바로 AC를 받았다. 코딩 다 했는데 알고보니 나머지 연산 처리를 한 번 빼먹었다 ㅠㅠ #

KOI 이후로 문제 풀이를 거의 손을 놓고 있었기 때문에 결과를 별로 기대하지 않고 본 시험이었다. 이번 시험을 계기로 문제 풀이를 다시 시작해 ACM-ICPC를 대비하는 계기가 되지 않을까 하는 마음을 가지고 대회를 시작했다. 문제를 보고 느낀 점은 다행히 생각하는 능력은 많이 줄어들지 않았다는 점이다. A, C, D 모두 보자마자 바로 감을 잡고 풀기 시작했다. 하지만 코딩을 한 지 오래되기도 했고 마지막으로 코딩하고 키보드도 바뀌어서 코딩 속도는 꽤나 줄어들었다.

고등학교 때 국대를 못했던 대신 ACM-ICPC 월파를 바라고 공부하고 있다. 실제로 열심히 준비할 수 있을지 어떨지는 학기가 시작해 봐야 확실해질 것으로 보이지만 우선은 할 수 있는 일을 하면서 최선을 다하자!

댓글 남기기