Advent of Code 2025: 퍼즐과 함께 일어나기
Source: Dev.to
Why I Do Advent of Code
Advent of Code는 저에게 매년 하는 일상이 되었습니다. 알고리즘과 자료구조 실력을 날카롭게 유지할 수 있는 방법이자, 매년 12월에 기대하게 되는 이벤트입니다. 그동안 새로운 프로그래밍 언어를 배우는 데도 활용했는데, 엘릭서, 자바, 타입스크립트 등 여러 언어로 풀이를 해보았습니다. 최근 몇 년간, 그리고 이번 해에도 파이썬을 고수하고 있습니다.
Advent of Code에서 또 하나 중요한 부분은 커뮤니티입니다. 동료들과 풀이를 공유하고, 소셜 미디어에 올리며, 다른 사람들이 어떻게 퍼즐을 해결했는지 보는 것이 큰 즐거움이 됩니다. 이런 상호작용이 전체 이벤트 중 가장 재미있는 요소이기도 합니다.
My Rule
가능한 한 많이 진행하려고 노력하지만, 하나의 규칙이 있습니다: 퍼즐이 공개된 그 날에 풀 수 있어야 한다는 것. 경험상 퍼즐을 오래 두면 너무 많은 시간을 빼앗고, 최악의 경우 삶을 지배하게 됩니다. 올해 형식은 기존 25일이 아닌 12일만 진행돼서, 퍼즐을 다 푼 뒤 12월에 여유를 가질 수 있었습니다.
Morning Routine
Advent of Code 기간 동안 제 아침은 꽤 정해진 루틴을 따릅니다. 퍼즐은 현지 시간으로 오전 6시에 열리며, 저는 출근 전 약 한 시간 반 정도의 시간을 가집니다. Advent of Code가 최고의 알람 시계라고 자주 말합니다. 퍼즐을 푸는 순간 빠르게 깨어나고, 커피 루틴과도 잘 맞습니다. 동시에 가끔은 이벤트 때문에 수면이 줄어들기도 하는데, 짧은 형식이 올해는 잘 맞았습니다. 다행히 6·7일 차 주말엔 잠을 좀 보충할 수 있었습니다.
Writing Blog Posts
올해는 매일 블로그 포스트를 작성했습니다. 퍼즐에 대해 글을 쓰면서 이해도가 크게 높아졌습니다—해결책을 글로 설명하려면 먼저 스스로 완전히 이해해야 하거든요. 가르치고 설명하는 과정이 학습을 강제합니다. 포스트에 무엇을 포함할지 고민했는데, 전체 스토리를 다 넣을지 핵심 알고리즘만 넣을지 고민했습니다. 결국 두 가지를 적절히 섞어 중간 정도로 마무리했습니다.
Challenging Days
몇몇 날은 꽤 어려웠습니다. 9일 차는 도형을 서로 맞추는 문제였고, 10일 차는 정수 프로그래밍을 다루었는데—제가 한 번도 구현해 본 적 없는 것이었죠—특히 기억에 남습니다. Advent of Code가 진짜 의미하는 바는 바로 이런 새로운 것을 구현하면서 배우는 것입니다. 어려운 날엔 모든 것을 처음부터 구현하기보다 기존 라이브러리를 활용했습니다. 전혀 문제되지 않습니다; 소프트웨어 개발자로서 라이브러리를 자주 쓰죠, 다만 그 동작 원리와 알고리즘 흐름을 이해한다면 말이죠.
AI Assistance
저는 의도적으로 AI를 활용했습니다. 주로 VS Code의 GitHub Copilot 연동을 사용했죠. AI와 협업해서 얼마나 코딩할 수 있는지, 라이브러리를 제안받거나 작은 헬퍼 함수를 작성하게 할 수 있는지를 실험했습니다. 가장 중요한 규칙은 생성된 모든 코드를 내가 이해해야 한다는 것이었습니다. 이렇게 사용하면 AI가 단순히 지름길이 아니라, 생각을 돕는 도구—대화하고 문제를 논의할 수 있는 개발자와 같은 존재가 됩니다.
Lighter Days
덜 힘든 날도 있었습니다. 예를 들어 11일 차는 비교적 깔끔하고 단순한 그래프 문제였으며, 저는 꽤 빠르게 해결책을 찾았습니다. 과거에 이런 유형의 문제로 얼마나 고생했는지를 떠올리게 하는 순간이었고, 이제는 이런 문제들이 훨씬 편안하게 느껴지는 이유를 보여줍니다.
Reflections
Advent of Code 2025 전체를 돌아보면, 여러 가지가 확인되었습니다:
- 설명하는 것이 여전히 제가 배우는 큰 방법이다.
- 상황에 맞으면 도구와 라이브러리를 사용하는 데 전혀 문제가 없다.
- 짧은 이벤트와 당일에 퍼즐을 푸는 등 명확한 경계가 Advent of Code를 즐겁게 유지하고 압도되지 않게 만든다.
무엇보다도 12월에 일찍 일어나 퍼즐을 푸는 것이 아직도 즐겁습니다. 이것이 아마도 매년 다시 찾게 만드는 가장 큰 이유일 것입니다.