본문 바로가기

Contest/Others

Google HashCode 2022 Qualification Round 후기

구글 해시코드 예선이 오늘 새벽 2시 30분 ~ 6시 30분에 치러졌다. 나는 선린 분들과 함께 대회에 참가했다.

 

 해시코드가 휴리스틱 대회라 불리고 연습 문제로도 그런 걸 주길래 SA 열심히 짜면 된다고 생각했는데 전혀 아니었다.

새벽이라 그런지 글도 잘 안 읽혀서 문제를 이해하는 데에만 30분 정도 걸렸고, 도저히 구현할 수 없을 것 같은 조건이 여러 개 있었다.

 

 일단, 제출 횟수를 줄이고 디버깅을 편하게 하려면 체커가 있어야 된다고 생각해서 무지성으로 체커를 짜기 시작했다. 하지만 호기롭게 짜던 중 병렬 처리가 내 구현으로는 불가능하단 것을 깨달았고, 빠르게 포기했다. 나중에 보니 제출을 하면 구글이 알아서 잘 알려주더라...

 

 상황을 보니 각개전투를 하고 있길래 나도 참전했다. 채완님이 짜주신 기본 템플릿이 상당히 유용해서 이걸 기반으로 코딩을 시작할 수 있었다. 우리 팀의 기본 아이디어는 '플젝을 어떤 기준으로 정렬한 후, 순차적으로 해결하자'였다. 여기에 그리디를 얹은 풀이를 나와 차누님이 동시에 작성해서 제출해보았지만, 커팅을 추가한 내 풀이가 점수가 현저히 낮게 나왔다. 다른 부분에는 차이가 전혀 없는 것 같아서 이 현상에 대한 의견을 물어봤더니 우리는 플젝이 개별적으로 진행된다고 가정했지만 실제로는 병렬적으로 진행되기 때문에 내 커팅이 오히려 풀이를 망칠 수 있다는 답변이 돌아왔다. 비슷한 이유로 내가 시도한 여러 커팅은 모두 시간만 잡아먹었다.

 

 찬우님은 기존 코드에 이것저것을 추가하면서 점수를 야금야금 올리는 중이었고, 채완님은 랜덤을 잘 섞어서 여러 시도를 해보는 중이었다. 나는 이런 방법으로는 점수를 얻을 만큼 얻은 것 같아서 멘토링 과정을 어떻게든 추가해보려고 애를 썼다. WA를 몇 번 받고 나서 보니 멘토링 과정 중 조건 하나를 놓쳤다는 것을 깨달았고, 이것 고칠 힘이 나지 않아 이때부터 랜덤 풀이에 동참했다. 결과적으로 점수를 올리진 못했다.

 

결과는 전체 1011등, 한국 26등으로 우리 기대에는 미치지 못했다.

내가 C, 채완님이 F의 최고점을 찍어줬고 나머지는 전부 찬우님이 최고점을 먹었다.

 

우리 팀은 스코어보드 프리즈 이후로 점수 변동이 거의 없었는데, 그 이유를 들어보자면

- 팀 전체적으로 한 가지 풀이 밖에 짜지 않았다.

- 데이터를 구조적으로 분석하고, 뚫어볼 생각을 거의 하지 않았다.

 

데이터 별로 특징을 찾아서 그에 맞는 풀이를 떠올리는 것이 가장 효과적으로 점수를 얻는 방법이었을 것 같은데 이를 시도하지 않은 부분이 아쉬웠고, 또 브루트포스 풀이를 놓친 것이 조금 후회됐다. 사실 별 다른 연습과 전략도 없었기에 당연한 수순이긴 하다. 이번 경험을 통해 다음대회는 보다 체계적으로 풀어나갈 필요성을 느꼈다. 그럼에도 대회는 재미있었고, 새벽을 통째로 날린 것에 대한 후회는 전혀 없다.

 

함께 해준 '고3이 PS?!' 팀원들 모두 수고 많았고, 즐거웠습니다.