순수 SQL로 구현된 Advent of Code 2024

2 days ago 4

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

Read Entire Article