지난번 2021년도 대회 후기 - 해킹(CTF) 편에 이은 알고리즘(PS) 편이다. 올해는 전반적으로 성적이 좋지는 못한데, 개인적으로 기대했던 SCPC에서 억울할 정도의(…) 성적을 받아 여러모로 후유증이 남기도 했다. Z플립 3 지를때 “SCPC에서 보충해야지”라고 계획까지 세워놨는데…

구글 코드잼(Google Code Jam)

“원래 코드잼은 티셔츠 받으려고 하는거죠”

  • 주관 : 구글(Google)
  • 결과 : Round 3 진출

매년 구글에서 진행하는 프로그래밍 대회이다. Qualification Round → Round 1 → Round 2 → Round 3 → World Final까지 총 5단계로 이뤄지며, 각 라운드의 진출요건은 다음과 같다.

  • Qualification Round
    • 절대평가로 30점 이상의 점수를 얻으면 Round 1로 진출
    • 결과 : 100/100으로 Round 1 진출
  • Round 1
    • 3개의 라운드(1A, 1B, 1C) 중 하나에서 1500위 이상을 달성하면 Round 2로 진출
    • 결과 : Round 1A에서 1146위로 Round 2 진출
  • Round 2
    • Round 2 참가자들 중 상위 1000명이 Round 3에 진출
    • 결과 : 405위로 Round 3 진출
  • Round 3
    • Round 3 참가자들 중 상위 25명이 World Final에 진출
    • Round 3 진출자 전원에게 코드잼 티셔츠 증정
    • 결과 : 최종 372위로 종료
  • World Final
    • 살면서 한번쯤은 여기까지 올라가보고 싶어요…

실력 유지를 위한 암묵적인 선으로 Round 3 상위 500명 이내를 목표로 잡았는데, 재작년, 작년에 이어 올해도 목표를 달성해 새 티셔츠를 얻을 수 있었다.

페이스북 해커컵(Facebook Hacker Cup)

“자정까지 CCE 뛰고 새벽 2시에 또 대회하기는 무리였습니다..ㅠㅠ”

  • 주관 : 페이스북(Facebook)
  • 결과 : Round 2 진출 이번엔 티셔츠는 못 받았다

매년 페이스북에서 진행하는 프로그래밍 대회이다. 코드잼과 유사하게 Qualification Round에서 World Final까지 총 5단계로 이뤄지며, 각 라운드의 진출요건은 다음과 같다.

  • Qualification Round
    • 절대평가로 1문제 이상을 해결하면 Round 1로 진출
    • 결과 : 65/100으로 Round 1 진출
  • Round 1
    • 절대평가로 24점 이상의 점수를 얻으면 Round 2로 진출
    • 결과 : 63/100으로 Round 1 진출
  • Round 2
    • Round 2 참가자들 중 상위 500명이 Round 3에 진출
    • 1문제 이상을 해결한 상위 2000명의 참가자들에게 티셔츠 제공
    • 결과 : (미참가)
  • Round 3
    • Round 3 참가자들 중 상위 25명이 World Final에 진출
  • World Final
    • 코드잼과 동일

이번 Round 2는 새벽 2시에 진행되었는데, 전날 오전 9시부터 자정까지 사이버공격방어대회(CCE) 예선을 진행하고 나니 몸이 피곤해 대회를 하나 더 뛸 수 있는 상태가 아니었다. 고민 끝에 1문제만 풀고 티셔츠라도 받겠다는 마음에 알람을 맞췄지만 침대에 뻗은 몸은 그대로 일어나지 못했다고 한다(…)

삼성 대학(원)생 프로그래밍 경진대회(SCPC)

“어려운거 맞아놓고 쉬운거 못풀어서 터짐(…)”

  • 주관 : 삼성전자
  • 결과 : 본선 진출, but No Awards(…) 아니 문제 1번의 상태가…

삼성전자에서 주관하는 대학생/대학원생 대상 알고리즘 대회로, 국내 대회 중 가장 상금 규모가 크고 대학원생 신분으로도 참가할 수 있는 몇 안 되는 대회 중 하나이다. 작년에 이어 올해도 1,2차 예선, 본선 모두 온라인으로 진행되었다. 2회 수상하면 입상자격이 사라지는 만큼 올해 상을 받아 SCPC를 졸업하겠다는 목표를 세웠다.1

그리고 결과는 폭망했다(…) 대회를 시작하고 1번부터 계속해서 오답이 나왔고, 몇 번 틀린 이후 결국 2번으로 넘어갔다. 겨우 2번을 해결하고 보니 2번문제의 만점자 수가 3명밖에 없었고, 1,3번을 해결한 사람은 많았기에 “지금부터 멘탈만 제대로 잡으면 최소 3등상, 잘하면 2등상이다”라는 헛된 꿈을 꾸면서 다시 1번으로 돌아갔다. 그러지 말았어야 했는데 그러나 대회가 거의 끝나갈 무렵까지 정답을 받지 못했고, 그렇게 3번 이후는 제대로 보지도 못한 채 대회가 종료되었다.

대회가 종료된 후 최종 스코어보드를 통해 2번문제 만점자가 4명, 3번문제 만점자는 38명으로 3번의 난이도가 2번에 비해 다소 낮았던 것을 알 수 있었다. 풀이를 들어보니 1번의 정해는 case work였는데, 일반화된 규칙을 적용해보려는 시도를 하면서 edge case를 제대로 찾지 못한 게 패인이었다. 3번은 Suffix Array를 구현하거나, 손으로 규칙을 찾아 직관적(?)으로 구현하면 되는 문제여서 더 아쉬움이 컸다. 차라리 1번을 빠르게 포기하고 2,3번 + 4번을 긁었으면 어땠을까라는 생각이 머리를 떠나지 않았고, 그렇게 며칠이 지나고 나서야 고난이도 문제를 풀었으면서 막상 (비교적) 쉬운 문제를 풀지 못해 떨어졌다는 미련에서 벗어날 수 있었다.2

MOBIS 알고리즘 경진대회

“갓들의 향연 속에서 소소하게 용돈만 벌어갑니다”

  • 주관 : 현대모비스
  • 결과 : 5등상

현대모비스에서 개최한 알고리즘 경진대회로, 만 18세 이상이면 누구나 참가할 수 있었다. 1등상으로 기아 K5 자동차라는 스케일 큰 부상을 내걸어 PS업계(?) 사람들 사이에서는 화제가 됐던 대회이기도 했다. 예선/본선 모두 프로그래머스 플랫폼을 이용해 진행되었다.

예선에서 상위 50명만이 본선에 올라가는 만큼 마지막 문제에서 조금 추한 방법3까지 동원한 끝에 본선에 진출할 수 있었다. 본선에서는 다른 대회들에 비해 수학적인 요소를 다루는 문제들이 많아 생각보다 난이도가 높다는 인상을 받았고, 풀이 고민과 함께 한때 PS대회를 떠났지만 KIA K5를 향해 되돌아오신 천상계 분들을 구경하며 대회를 마쳤다. 워낙 쟁쟁한 분들이 많이 참가했기에 상위 17명(4등상 기준)이라는 숫자는 약간 빠듯하다고 생각했는데, 아쉽게도 그 예상이 어긋나지 않아 최종 5등상을 받을 수 있었다.


  1. 2017년도에 4등상을 수상한 적이 있다. 

  2. 사실 아직도 조금 남아있다(…) 

  3. 답이 존재한다면 그 해를, 존재하지 않는다면 -1을 출력하는 전형적인 문제였는데, 휴리스틱으로 답을 탐색하다가 연산횟수가 일정 수치를 넘어가면 그냥 -1을 출력시켰다(…)