-
순수 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이 데이터베이스 내에서 복잡한 알고리듬을 실행하는 데 있어 강력한 선택지가 될 수 있음.