Advent of Code 2025
(adventofcode.com)- Advent of Code는 다양한 수준의 프로그래머를 위한 프로그래밍 퍼즐 어드벤트 캘린더로, 어떤 언어로든 풀이 가능함
- 참가자는 면접 준비, 기업 교육, 대학 과제, 연습 문제, 속도 경쟁 등 다양한 목적으로 활용 가능
- 컴퓨터 과학 전공이 없어도 참여할 수 있으며, 10년 된 컴퓨터에서도 15초 이내 실행 가능한 문제로 구성됨
- 사이트는 OAuth 인증, 하이 콘트라스트 모드, 개인 리더보드, 코드 블록 선택 기능 등을 지원함
- 전 세계 리더보드는 스트레스와 부정행위 문제로 폐지되었으며, 참가자 중심의 즐거운 문제 풀이 경험이 강조됨
Advent of Code 개요
- Advent of Code는 Eric Wastl이 만든 연례 프로그래밍 퍼즐 이벤트로, 매년 12월 1일부터 시작되는 온라인 어드벤트 캘린더 형식의 퍼즐 제공
- 참가자는 매일 새로운 문제를 풀며, 언어 제약 없이 자유롭게 풀이 가능
- 문제는 면접 대비, 교육, 연습, 경쟁, 상호 도전 등 다양한 용도로 활용됨
- 참여에 컴퓨터 과학 전공 지식은 필요하지 않으며, 기본적인 프로그래밍과 문제 해결 능력만으로 충분함
- 모든 문제는 10년 된 하드웨어에서도 15초 이내 실행 완료 가능
참여 및 지원 방법
- Advent of Code를 지원하려면 Bluesky, Twitter, Mastodon 등에서 공유하거나 AoC++ 을 통해 직접 후원 가능
- 문제 풀이 중 막히면 예제 입력 확인, 테스트 케이스 작성, 친구에게 도움 요청, subreddit에서 힌트 요청 등의 방법 권장
일반 팁 (General Tips)
- 예제 입력과 출력이 일치하지 않으면 문제 설명을 다시 읽고 코드 동작을 점검해야 함
- 예제 통과 후에도 정답이 틀리면 수동 검증 가능한 테스트 케이스를 만들어 확인
- 여전히 해결이 어렵다면 잠시 쉬었다가 다시 시도하거나 커뮤니티에 질문 가능
자주 묻는 질문 (FAQ)
- 코드 블록 선택: JavaScript가 활성화된 상태에서 트리플 클릭으로 전체 선택 가능
-
인증 방식: OAuth를 사용해 Reddit, GitHub 등 외부 서비스로 로그인하며, 자격 증명은 해당 서비스에만 전달됨
- Advent of Code는 사용자 ID, 이름, URL, 이미지만 저장
- 난이도 변화: 이벤트 기간 동안 점진적으로 어려워지며, 개인의 기술 수준에 따라 체감 난이도가 달라짐
-
퍼즐 공개 시각: 미국 동부 표준시(UTC-5) 자정에 공개되며, 이는 운영자가 관리 가능한 시간대이기 때문
- 경쟁을 원할 경우 개인 리더보드를 통해 지역별로 경쟁 가능
- 가독성 문제: 하이 콘트라스트 모드 지원, Firefox에서 기본 활성화 가능
- 퍼즐 제안 금지: 저작권 문제로 인해 외부에서 퍼즐 아이디어를 받지 않음
-
버그 신고: 퍼즐 공개 후 1시간 이상 지나면 이미 많은 사용자가 해결했으므로, 버그 가능성은 낮음
- 문제 발생 시 subreddit에서 먼저 확인 권장
- 속도 경쟁 여부: 빠른 풀이를 원한다면 추가적인 연습과 기술이 필요하지만, 자신의 목표에 맞는 방식으로 참여하는 것이 중요
- 이벤트 일수 변경: 10년간 일정 유지 후, 운영자의 시간 부담 완화를 위해 중순 종료로 변경
-
글로벌 리더보드 폐지: 과도한 경쟁과 DDoS 공격, 사용자 스트레스 등의 문제로 10년 후 폐지
- 대신 읽기 전용 개인 리더보드 공유 기능 제공
-
AI 사용: 퍼즐은 인간의 사고력 향상을 목표로 하므로 AI 사용은 권장되지 않음
- “대신 운동을 시켜도 본인이 강해지지 않는다”는 비유로 설명
-
콘텐츠 복제 금지: Advent of Code는 무료로 사용할 수 있지만, 퍼즐 텍스트나 입력 데이터 복제 금지
- 웹사이트 디자인이나 이름을 모방하는 행위도 금지
크레딧 (Credits)
- 퍼즐, 코드, 디자인: Eric Wastl
- 베타 테스트: Ben Lucek, JP Burke, Aneurysm9, Andrew Skalski
- 커뮤니티 매니저: Danielle Lucek, Aneurysm9
- 참여자: 모든 사용자
법적 고지 (Legal)
- Advent of Code는 미국 등록 상표이며, 디자인·언어·스타일·콘셉트는 모두 독점적 자산
- 명시적 서면 동의 없이 복제나 사용 불가
- 퍼즐에 대한 링크나 인용은 자유롭게 가능하며, 상업적 맥락에서도 허용
- Advent of Code는 참가자의 풀이 코드에 대한 저작권을 주장하지 않음
Hacker News 의견
-
컴퓨터공학 배경이 없어도 참여할 수 있다는 말을 들을 때마다, 사실상 취미 프로그래머들에게는 실망을 안겨줄 수 있다고 느낌
“꽤 멀리 간다”는 말이 1~2개의 쉬운 문제를 푸는 수준이라면 맞겠지만, 그 이상은 쉽지 않음- 어떤 사람은 문제들이 “너무 쉽다”고 했는데, 나는 도대체 어떤 세상에 사는 건지 의아했음
- 나도 동의함. 개발자로 일하는 친구들이 생각보다 진전이 적은 것을 보고 놀랐음
-
Advent of Code는 매년 12월의 하이라이트임
글로벌 리더보드가 사라진 건 아쉽지만 이해할 만함. 올해 12일만 진행되는 것도 부담을 줄여줘서 좋음
“이기려고” 하지 말고, 단순히 문제 해결의 재미를 즐기길 추천함- 12일이지만 실제로는 24개의 챌린지라서, 나는 24일 동안 천천히 즐길 예정임
- 12일로 줄어든 건 아쉽지만, 글로벌 리더보드는 원래 시간대 편차 때문에 실질적인 경쟁이 어려웠음. 개인 리더보드가 훨씬 나음
- 올해는 친구들과 로컬 리더보드를 만들어볼 생각임. 글로벌은 어차피 못 올라갔을 테니까
- 이런 이벤트에 전혀 흥미가 없다는 걸 보면, 나는 개발자가 아닌 게 확실함
-
나는 Advent of Code를 정말 사랑함
올해 12일만 진행되는 게 오히려 반가움. 연말엔 현실 일정이 많아서 작년엔 절반쯤밖에 못 했음
참여자들에게 큰 감사를 전함- 작년엔 7일차까지만 했는데, 올해는 덜 부담스러워서 좋음
- 이번엔 드디어 완주할 수 있을지도 모름
- 올해가 너무 기대됨
-
올해 처음 Advent of Code를 해봤는데, 정말 재미있었음
Project Euler와 비슷하지만 수학보다는 프로그래밍 중심임
1단계는 간단하지만 2단계는 최적화된 접근법을 요구해서 흥미로움 -
퍼블릭 리더보드를 없앤 건 합리적임
LLM 문제를 떠나서도, 특정 미국 시간대 외에는 경쟁이 불가능했음
대신 전 세계적으로 시간대별 풀이율 같은 통계를 보면 재밌을 것 같음- LLM이 망쳤지만, 예전엔 진짜 상위권 풀이를 보는 게 흥미로웠음
유튜브에서 실시간 코딩 영상을 보는 재미도 있었음
- LLM이 망쳤지만, 예전엔 진짜 상위권 풀이를 보는 게 흥미로웠음
-
Advent of Code를 매년 기다림
리더보드에 스트레스 받지 않고, 새로운 언어를 배우거나 기술을 다듬는 기회로 삼음
평소엔 직접 프로젝트를 부트스트랩하거나 DFS를 구현할 일이 없기 때문에, 이런 이벤트가 좋은 연습임- 나도 이런 문제만 푸는 일을 해보고 싶지만, 아마 번아웃이 올 것 같음
그래서 평소엔 테스트 작성이나 문서화 같은 일로 균형을 맞춤
매년 이전 문제를 조금씩 개선하면서 효율성과 가독성을 높이는 연습을 함
- 나도 이런 문제만 푸는 일을 해보고 싶지만, 아마 번아웃이 올 것 같음
-
올해도 Advent of Code가 열려서 기쁨
FAQ를 읽다가 입력 데이터를 공개하지 말라는 규칙이 이해가 잘 안 됐음
퍼즐 텍스트는 이해하지만 입력까지 비공개여야 하는 건 아쉬움. 그래도 무료로 즐기는 만큼 존중함- 입력이 공개되면 누군가 퍼즐 생성 로직을 복제할 수 있어서 그렇다고 함
- 예제 입력만 커밋하고, 테스트는 그걸로 돌리면 충분함. Python이나 Rust의 doctest처럼 구조화하면 깔끔함
- 나는 코드는 공개하지만 입력은 private submodule로 관리함
- git-crypt로 입력 파일을 암호화해서 공개 저장소에 올림
-
언어 설문: Python과 C++이 주로 쓰이지만, 비주류 언어 중에서도 AoC에 잘 맞는 게 있음
어떤 언어가 좋은지 공유해보자는 제안임- 나는 K나 Uiua 같은 배열 언어를 좋아함. 보기엔 괴랄하지만 초반 문제엔 딱임
농담이지만, 가끔은 Game Boy용 ASM으로도 풀어봄. 실제로는 Clojure나 Python을 씀 - 나는 Haskell+Bash 스타일로 만든 자작 언어를 씀. 유튜브 데모도 있음
올해는 바이트코드 컴파일러를 만들고 있음. 리더보드에선 Go를 쓰는데, 컴파일 속도 덕분에 2022년 Day19에서 1등 했음 - Haskell을 쓰면 파서 콤비네이터로 입력 처리가 쉬움. 게다가 게으른 평가와 재귀로 간결한 코드 작성이 가능함
예를 들어, 무한 리스트를 생성해 조건을 만족할 때까지 순회하는 식으로 풀이함 - Ruby가 이상적임. 표현력 있는 문법과 풍부한 표준 라이브러리, 문자열 처리 도구가 많음
each_cons,permutation,prime같은 메서드들이 AoC에 유용함 - Go는 빠르고 단순해서 좋고, OCaml은 타입 시스템과 실행 속도가 훌륭함
미리 2D 그리드나 파서 유틸을 준비해두면 훨씬 효율적임
- 나는 K나 Uiua 같은 배열 언어를 좋아함. 보기엔 괴랄하지만 초반 문제엔 딱임
-
올해는 어셈블리(fasm) 로 도전해볼 생각임
재미있을 수도, 고통스러울 수도 있지만, 어쨌든 배우기 위한 과정임 -
작년 AI 자동화 붐 이후 리더보드가 사라진 듯함
아쉽지만 불가피한 결정으로 보임- 퍼즐 공개 시간이 미국 기준이라, 나는 항상 자는 중이었음
어차피 경쟁은 어려웠으니 글로벌 리더보드는 별 의미가 없었음
- 퍼즐 공개 시간이 미국 기준이라, 나는 항상 자는 중이었음