본문으로 건너뛰기

F#으로 해결하는 Advent of Code 2025 - 2일차: AI 어시스턴트를 활용한 알고리즘 구현

F# 언어를 사용하여 Advent of Code 2025 2일차 퍼즐을 해결하며, Claude 3.5 기반 AI 어시스턴트를 활용해 단위 테스트를 생성하고 로직을 검증하는 과정을 보여줍니다.

챕터별 상세

00:00

문제 정의 및 데이터 파싱

Advent of Code 2025 2일차 퍼즐을 해결하기 위해 입력 데이터를 읽어오고 파싱하는 기초 작업을 수행했다. F#의 File.ReadAllText를 사용해 텍스트 파일을 불러온 뒤, 공백과 하이픈을 기준으로 데이터를 분리하여 숫자 범위 쌍으로 변환했다. 이 과정에서 AI 자동 완성 기능이 파싱 로직 작성을 보조했다.
02:25

Part 1: 단순 반복 문자열 감지 로직 구현

동일한 문자열이 두 번 반복되는 'Invalid ID'를 찾는 Part 1 로직을 구현했다. 문자열을 정확히 절반으로 나눈 뒤 앞부분과 뒷부분이 일치하는지 비교하는 split 함수를 작성했다. List.filter와 List.map을 활용해 주어진 범위 내의 모든 ID를 검사하고 조건을 만족하는 ID들의 합계를 계산했다.
fsharp
let split (s : string) : string * string =
    let half = s.Length / 2
    (s.Substring(0, half), s.Substring(half))

문자열을 정확히 절반으로 나누어 튜플로 반환하는 함수

13:00

Part 2: 가변 길이 반복 패턴 검색으로 확장

특정 패턴이 2회 이상 반복되는 모든 경우를 찾아야 하는 Part 2 문제를 해결하기 위해 로직을 확장했다. 고정된 절반 분할 방식 대신 1부터 문자열 길이의 절반까지 가변적인 크기로 청크를 나누어 검사하는 재귀 함수를 도입했다. Seq.chunkBySize를 사용하여 문자열을 일정 크기로 나누고, 모든 조각이 동일한지 확인하는 방식으로 유효성을 검증했다.
fsharp
let rec invalidId (id : string) (size : int) : bool =
    if size = 0 then false
    else
        let chunks = id |> Seq.chunkBySize size
        if chunks |> Seq.distinct |> Seq.length = 1 then true
        else invalidId id (size - 1)

문자열 내에서 특정 크기의 패턴이 반복되는지 재귀적으로 확인하는 로직

26:00

AI 어시스턴트를 활용한 단위 테스트 생성

복잡해진 Part 2 로직을 검증하기 위해 Claude 3.5 기반 AI 어시스턴트를 활용했다. 문제 설명과 예시 데이터를 AI에게 전달하여 다양한 엣지 케이스를 포함한 단위 테스트 코드를 생성했다. AI가 생성한 테스트를 통해 재귀 함수의 동작을 확인하고 로직의 오류를 수정하는 과정을 거쳤다.

Claude 3.5는 Anthropic에서 개발한 대규모 언어 모델로, 코드 생성 및 논리적 추론 능력이 뛰어나 개발 보조 도구로 널리 쓰인다.

29:30

최종 결과 도출 및 성능 확인

완성된 알고리즘을 실제 대규모 입력 데이터에 적용하여 최종 결과를 도출했다. 브루트 포스(Brute-force) 방식의 접근으로 인해 실행에 약 10초 정도 소요되었으나, 문제 해결에는 충분한 성능임을 확인했다. 최종적으로 Advent of Code 사이트에서 정답을 확인하고 두 번째 별을 획득했다.

용어 해설

어드벤트 오브 코드(Advent of Code)
매년 12월 1일부터 25일까지 매일 하나씩 공개되는 프로그래밍 퍼즐 이벤트이다. 전 세계 개발자들이 참여하여 알고리즘 해결 능력을 겨루며, 다양한 프로그래밍 언어의 학습과 실습 장으로 활용된다.
F#
.NET 플랫폼에서 동작하는 강력한 타입 시스템을 갖춘 함수형 중심의 다중 패러다임 프로그래밍 언어이다. 데이터 처리와 복잡한 알고리즘 구현에 최적화되어 있으며, 간결한 문법과 불변성을 강조한다.
브루트 포스(Brute-force)
가능한 모든 경우의 수를 일일이 대입하여 문제를 해결하는 가장 단순하고 확실한 알고리즘 설계 기법이다. 구현이 쉽지만 데이터 규모가 커질수록 연산 시간이 급격히 증가하는 단점이 있다.
단위 테스트(Unit Test)
소스 코드의 특정 모듈이나 함수가 의도한 대로 정확히 작동하는지 검증하는 테스트 단계이다. 개발 과정에서 버그를 조기에 발견하고 코드 리팩터링 시 안정성을 보장하는 핵심적인 역할을 한다.
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2025. 12. 02.수집 2026. 02. 21.출처 타입 YOUTUBE

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.