gunnew의 잡설

쌩초보의 구글 해시코드 도전기 본문

Careers?

쌩초보의 구글 해시코드 도전기

higunnew 2020. 2. 26. 16:43
반응형

 제목은 도전기라고 썼는데 사실 그냥 팀원 한 분이랑 심심해서 나가보기로 했던 대회이다. 혹시 나가기를 고민하고 있다면 나가보는 것을 권한다. 문제를 이해만 한다면, 그리고 구현 능력이 조금이라도 있다면 아마 문제를 풀 수 있을 것이다. 푸는 것 자체는 어렵지 않다. 다만 어떻게 최적화를 하느냐에 따라 점수를 달리 얻을 뿐이다..

 

 이번 글은 심심하기도 하고 그냥 구글 해시코드에 대한 정보가 인터넷에 많지 않아서 한번 써보는 거임

 

 대회는 일 년에 한 번 열리는데 Qualification Round가 있고 Final Round가 있다. Qualification Round는 집에서 볼 수도 있고 허브(Hub)에서 볼 수도 있지만 나는 우리 학교에 Hub가 있어 거기서 사람들과 다 같이 치렀다. 허브가 우리 나라에 총 네 곳 정도 있었는데 그렇다 보니 우리 학교 허브에 거물들이 너무 많이 왔다. 몰려오는 자괴감은 어쩔 수 없다.. 예를 들면 koosaga 님이라든지... 백준 빌보드 1페이지에 있는 사람 중 6명은 본 듯? 멍청하게 사인이나 좀 받을 것을.. 새벽 두 시반부터 대회가 진행되는 바람에 대회가 끝나고는 너무 피곤해서 그냥 나와 버렸다.

 

 

 아무튼 일단 여기 들어가면 https://codingcompetitions.withgoogle.com/hashcode/archive 지난 회차 문제들이랑 스코어 보드를 볼 수 있다. 문제를 보면 알겠지만 문제 자체는 우리가 온라인 저지 사이트에서 푸는 알고리즘 PS와는 성격이 많이 다르다. 거기서는 알고리즘을 모르면 아예 풀지를 못하지만 여기서는 정말 무식한 방법으로도 풀 수는 있다. 다만 점수가 많이 안나올 뿐.

 

 이 대회의 특징은 테스트 케이스가 사진처럼 6개 정도가 주어지는데 각 테스트 케이스에 대한 실행 결과 파일과 소스 코드를 함께 제출한다. 그러면 그 실행 결과 파일에서 산출된 점수들의 합이 실제 우리 팀의 총점이 된다. 암튼 문제를 보면 알겠지만 떠오르는 건 가장 먼저 Greedy로 푸는 것이다. 우리는 그래서 그리디로 해서 대충 정렬 때리고 막 어찌 저찌 돌려서 예시 A를 통과해서 21점을 얻고 스코어 보드를 보니 다른 팀들은 한 시간 만에 2700만 점을 뚫었다 ㅡ.ㅡ 

 

 

 

 그런데 고난은 여기서 시작이었다. 이 테스트 파일은 리눅스 텍스트 편집기로 작성되어 있어서 윈도우에서 열면 new line이 인식이 안된다. 그래서 입력을 해도 루프가 끝나질 않는다. 처음에 그 점을 간과하고 돌렸는데 끝나지 않길래 '아! 우리가 무식하게 짜서 계산이 한참 걸리는 구나' 하고 거의 한 시간 넘게 뻘짓을 했다. 그러다가 '아차! 이거 리눅스에서 돌려야지' 하고 리눅스를 켜고, 디버깅을 좀 쉽게 하려고 stdin으로 입력을 받았다.

 

 바로 여기가 이번 대회의 패착이었다. 이 테스트 케이스들을 확인해 보면 알겠지만, A는 example이라 엄청 작은데 B, C, D, E, F는 텍스트 파일이 엄청 크다. 이걸 복사해서 stdin으로 때려 박으니까 왜 그런진 모르겠으나 sync가 안 맞아서 입력이 제대로 안 받아지고 루프가 안 끝난다.. 우리는 이것도 모르고 '아 역시 우리는 빠가사리야...' 이러고 하루 종일 계산을 하는 줄 알고 가만히 있었다. 정말 멍청하다.

 

 그러다가 대회 종료 30분 전, 그냥 뭐에 홀린 듯이 ifstream을 하나 만들어서 텍스트 파일 입력 스트림을 만들고 해당 테스트 케이스를 돌려보았다. 성공이었다. 하.. 그래서 중간에 있는 런타임 에러를 발생시키는 버그 코드들을 손 보고 어떻게 어떻게 간신히 6시 26분에 마지막 제출에 성공하였다. (참고로 마감이 6시 30분)

 

 

 

 결과는 뭐 다음과 같다.. 총 10724팀이 참가했다. 처음 목표는 반타작이었기에 뭐 그럭저럭 괜찮다 생각했지만 그 입력받는 방식을 간과한 탓에 코드 최적화를 할 시간이 전혀 없었다는 게 너무 아쉬웠다..

 

 

 그래도 참 재미있는 대회였다. 학회 돈으로 합법적으로 피자도 사먹고, 서로 취업 상담도 하고, 구사과 님을 내 눈으로 앞에서 영접하기도 했다. 그리고 같이 나간 팀원 한 분도 정말 잘해주었다. 첫 팀 대회였는데 둘이 나름 잘 맞았던 것 같다. 내년엔 둘 다 좋은 자리 잡고서 심심풀이로 대회 한 번 더 나갔으면 좋겠다. 제발...

 

 


+  대회 시작 전 기념으로 세팅할 때 찍은 사진!

반응형
Comments