yozm.tech
피드로 돌아가기
Show HNHOTAI 재작성

Show HN: A 311 byte Klotski solver in C++

한 개발자가 고전 슬라이딩 퍼즐 게임인 클로츠키(Klotski)의 최단 경로 해법을 단 311바이트의 C++ 코드로 구현해 화제입니다. 2012년 모바일 게임을 즐기며 품었던 궁금증을 3년간의 컴퓨터 과학 전공 지식으로 풀어낸 결과물로, 보드 상태를 64비트 정수 하나로 압축해 효율성을 극대화했습니다. 이 솔버는 주어진 클로츠키 보드의 해법을 빠르게 찾아냅니다.

5시간 전·2026.10.01·읽기 1분·midnight_dream

한 개발자가 고전 슬라이딩 블록 퍼즐인 클로츠키(Klotski)의 해법을 단 311바이트(byte)의 C++ 코드로 구현해 공개했습니다. 이 솔버는 주어진 클로츠키 보드에서 가장 큰 2x2 블록을 목표 위치로 옮기는 최단 경로를 찾아내며, 보드 상태를 64비트(bit) 정수(uint64_t) 하나로 압축하여 메모리 효율성을 극대화한 것이 특징입니다.

클로츠키는 4x5 크기의 보드에 다양한 크기의 블록들이 배치되고, 두 개의 빈 공간을 활용해 블록을 움직여 특정 블록을 목표 지점으로 이동시키는 퍼즐 게임입니다. 이 솔버는 너비 우선 탐색(BFS) 알고리즘을 기반으로 하며, 모든 가능한 보드 상태를 탐색하여 최단 이동 횟수를 계산합니다. 특히, 20개의 각 셀(cell) 상태를 3비트로 인코딩하여 전체 보드를 60비트, 즉 64비트 정수 하나에 저장하는 독창적인 방식을 사용했습니다. 이는 약 3.1KB에 달하는 일반적인 솔버 코드에 비해 압도적으로 작은 311바이트로, 코드의 간결성과 성능을 동시에 잡았다는 평가를 받습니다.

이 프로젝트는 단순히 퍼즐을 푸는 것을 넘어, 복잡한 문제 해결을 위한 알고리즘과 데이터 구조를 극도로 효율적으로 구현하는 방법을 보여줍니다. 특히 제한된 자원 환경에서 소프트웨어를 개발해야 하는 경우, 이처럼 압축된 코드와 효율적인 데이터 표현 방식은 중요한 영감을 줄 수 있습니다. 또한, 퍼즐 게임 개발자들에게는 게임의 난이도를 분석하거나 최적의 해법을 검증하는 도구로 활용될 수 있으며, 컴퓨터 과학 교육 분야에서는 자료 구조와 알고리즘의 실제 적용 사례로도 가치가 있습니다.

1인 창업자를 위한 기회 분석
AI 분석 · 참고용이며 검증이 필요합니다
3/10
약한 신호
왜 3점인가

기술적 난이도가 높지 않고, 시장 규모가 크지 않아 1인 창업 기회로는 제한적입니다.

문제 / 미충족 수요

고전 퍼즐 게임의 해법을 효율적으로 찾는 기술은 여전히 흥미로운 연구 및 개발 주제입니다.

한국 시장
국내 있음한국에서도 퍼즐 게임은 인기가 많지만, 이처럼 최적화된 솔버 라이브러리를 직접 개발하여 판매하는 사례는 드뭅니다.
수익 모델

B2C 게임 내 퍼즐 힌트/솔버 기능 판매, B2B 퍼즐 게임 개발 도구 라이선싱 · 돈 내는 주체: 퍼즐 게임 개발사, 퍼즐 게임 사용자

1인 실현 가능성
4/5

알고리즘 구현 능력과 특정 퍼즐에 대한 이해가 필요하지만, 대규모 자본이나 팀은 불필요합니다.

진입 지점 (Wedge)

특정 고전 퍼즐 게임(예: 소코반, 15-퍼즐 등)에 특화된 초경량 솔버 라이브러리 개발 및 판매

이번 주 첫 실험

유사한 고전 퍼즐 게임 중 하나를 선정하여, 보드 상태를 정수로 압축하는 PoC(개념 증명) 구현

Original source
이 글은 Show HN의 기사를 yozm.tech가 한국어로 재작성한 버전입니다.
원문 보기