# 순수 SQL로 구현된 Advent of Code 2024

> Clean Markdown view of GeekNews topic #18556. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18556](https://news.hada.io/topic?id=18556)
- GeekNews Markdown: [https://news.hada.io/topic/18556.md](https://news.hada.io/topic/18556.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-03T10:07:16+09:00
- Updated: 2025-01-03T10:07:16+09:00
- Original source: [databasearchitects.blogspot.com](http://databasearchitects.blogspot.com/2024/12/advent-of-code-2024-in-pure-sql.html)
- Points: 2
- Comments: 1

## Topic Body

- # 순수 SQL로 Advent of Code 2024 도전

- **개요**
  - 필자는 올해 Advent of Code를 순수 SQL로 해결해보기로 결정했음.
  - 이 경험은 문제를 다르게 생각하도록 강요하여 흥미로웠으며, 모든 문제를 SQL로 해결할 수 있었음.
  - SQL은 의외로 사용하기에 쾌적한 경우가 많았음.

- **Day 11 예시**
  - 문제 입력을 포함한 전체 솔루션을 제시함.
  - SQL에서 입력을 파싱하는 것은 약간 번거롭지만, 불가능하지는 않음.
  - 알고리듬은 비교적 짧으며, 재귀적 필드 탐색을 수행함.
  - SQL은 소규모 탐색 작업에 적합함.

- **다른 날의 도전**
  - Day 16에서는 필드의 최소 탐색 거리를 계산하는 유사한 작업을 수행함.
  - SQL로 표현하기는 쉽지만, 평가가 비효율적임.
  - 큰 입력을 처리할 때 많은 상태를 유지해야 하며, 200GB 이상의 메모리가 필요함.
  - 일부 DBMS는 이 문제를 해결할 수 있는 기능을 제공하지 않음.

- **재귀 SQL의 한계**
  - Day 23에서는 희소 그래프에서 최대 클리크를 찾아야 했음.
  - Bron-Kerbosch 알고리듬을 사용하면 되지만, 재귀 SQL로 표현하기는 복잡함.
  - 재귀 SQL은 단일 집합만 전달할 수 있어 여러 집합을 유지해야 하는 알고리듬과 충돌함.

- **결론**
  - 복잡한 알고리듬을 SQL로 코딩하는 것이 가능하며, SQL 코드가 의외로 쾌적할 수 있음.
  - 상태를 업데이트할 수 있는 메커니즘이 있다면 재귀 SQL이 더 효율적이고 사용하기 쾌적할 것임.
  - 복잡한 상태 조작 메커니즘을 도입하면 SQL이 데이터베이스 내에서 복잡한 알고리듬을 실행하는 데 있어 강력한 선택지가 될 수 있음.

## Comments



### Comment 32917

- Author: neo
- Created: 2025-01-03T10:07:16+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42577736) 
- 새로운 메뉴 항목에 대한 반응은 욕망, 수치심, 인간의 창의력에 대한 감탄의 혼합임
- 경력 동안 SQL을 가장 많이 작성했으며, 최근 5년 동안은 덜 사용했지만 여전히 즐거웠음
- 반복적으로 생각하는 것을 멈추고 집합 연산으로 생각하기 시작하면 자연스럽고 강력해짐
- Google Sheets로 AoC를 시도했으며, Day 6까지 도달했지만 일부 입력에서 문자 제한에 부딪혔음
  - 모바일에서 열지 말 것을 권장함
- 과거에 운영직 인터뷰에서 대규모 데이터셋의 인보이스 보고서를 작성하는 문제를 받았음
  - 데이터 과학자가 아니어서 솔루션을 구성하는 데 어려움을 겪었음
  - Crystal Reports 같은 보고서 패키지를 사용했을 것이라고 설명했음
  - SQL로 문제를 해결했지만, 많은 기술이 필요함
- EdgeQL로 AoC를 시도했으며 흥미로운 경험이었음
  - 관련 트윗을 공유함
- SQL로 큐빙/컨테이너화 시스템을 작성했으며, 일부 추가 기능을 사용했음
  - 기본 알고리즘은 SQL의 기능과 잘 맞았음
  - 몇 가지 측면은 SQL에 맞추기 어려웠음
- AoC2024를 Google Sheets로 작업 중이며, 이를 문서화할 계획임
- 순수 SQL로 작업하는 것은 인상적이며, 오래된 블로그를 유지하는 것이 "니치 마스터리"를 보여줌
