본문 바로가기

Programming/Python

Google HashCode 나갔던 이야기 - 1

# (대충 사람들이랑 어쩌다 시작했다는 이야기)

이번에 Google HashCode 2020에 평소 NLP 스터디 하던 분들이랑 같이 출전했다. 결론부터 말하자면 975등! 아 태어나서 처음으로 구글대회에서 1000들 안에 들었다. 게다가 이번대회는 내가 캐리한것 같아서 ㅋㅋ 기분이 더 좋다. 

그동안 동료들과 준비했던 이야기를 간단히 적어보려고 한다. 

1. 팀 빌딩

처음에는 이 대회도 다른 알고리즘 대회랑 비슷할 줄 알았다. 뭐 몇문제 풀고 그런거. 근데 팀으로만 출전해야 한다길래...  NLP공부하던 같이 공부하던 사람들한테 혹시 이런거 나가볼 생각없냐고 슬쩍 던졌는데, 전원이 다 참가하고 싶다고 해서 ㅎㅎ 4명짜리 완전체 팀을 만들어서 나가게 됐지 뭐야. 나는 그냥 다른 알고리즘 대회처럼 적당히 쉬운문제 알려주면서 내가 풀고싶은거 풀면 될 줄 알았다. 

그. 런. 데. 나름 내 스승(?)인 H모군에게 물어봤더니 전부 NP 문제만 나온다는게 아닌가.
(NP가 뭔지 모르는 사람은 다음을 참고하자. NLP랑 아무 상관도 없다. https://eehoeskrap.tistory.com/286 ) 요약하자면, 정해진 시간내에 최적의 답을 구할 수 없는 문제들만 나온다는 것이다. 결국 최대한 최적에 가까운 휴리스틱 함수를 구현해서, 높은 점수를 기록한 팀이 이기는 그런 대회이다. 

생각해보니 차라리 다행이라는 생각이 들었다. 팀원들이 전부 Competitive Programming 경험이 없는 생초짜였기 때문이다. 멤버 소개를 하자면,
1. 현업 5년차 자바 백엔드 엔지니어 (인터뷰 면접용 문제 몇 번 풀어본 정도)
2. 딥러닝 박사 (알고리즘 문제 경험 0, 학부는 컴공 혹은 수학 관련 전공이 아님.)
3. 딥러닝 포닥 (알고리즘 문제 경험 0, 박사는 하드웨어쪽으로 하심.)
4. 딥러닝 엔지니어 (비전공자. 종종 취미로 문제 풀어봄. 최고성적 구글 코드잼 4500등)
와... 이렇게 적고나니 무슨 괴물 엔지니어 모임이라고 생각할 수도 있겠지만, (생각해보니 그냥 모든 문제를 딥러닝으로 푸는 참신한 접근을 해볼까 하는 생각도 든다 ㅋㅋㅋ) 여튼 기존의 다른 알고리즘 문제를 풀어 본 적이 없는 분들이다. 나를 포함해도 일명 선출은 하나도 없다. 입력 파싱하는법 부터 시작해야 한다는 말이었다.

그래서 마음을 편하게 먹었다. 여차하면 그냥 나 (4번) 혼자 문제를 풀고, 나머지 분들은 경험이라도 하게 해서 장기적으로 (1년뒤) 다른 대회를 노려보자 하는 마음으로 작전을 바꿨다.

왜 이게 생각 나지... 

내가 처음 알고리즘 대회 나갔을때의 가슴 뛰는 경험을 공유하는 것 만으로도 효과가 있지 않을까 생각했다. 근데 이게 웬일. 짧은 기간동안 다들 정말 연습에 열심히 집중해줘서 멤버들이 대회 당일날 정말 많은 도움이 되었다.

일단 멤버들이 멤버이니 만큼, 주 언어는 Python으로 정했다. HashCode가 실행시간 제한이 빡빡한 대회도 아니었고, 다들 파이썬이 제일 익숙 했다 (자바 개발자분은 파이썬을 배우고 싶다는 강력한 동기가 있었음). 게다가 알고리즘을 코드로 짧은 시간안에 바꿀 수 있다는 엄청난 장점!

자. 힘들었던 연습이야기는 2편에...