처리중입니다. 잠시만 기다려주세요.
TTJ 코딩클래스
정규반 단과 자료실 테크 뉴스 코딩 퀴즈
테크 뉴스
Hacker News 2026.07.27 29

지뢰찾기를 뒤집은 퍼즐, '해바라기'가 보여주는 난이도 설계의 속살

Hacker News 원문 보기

논리 퍼즐 장르에서 지뢰찾기는 오랫동안 표준 문법으로 통했다. 숫자 단서를 보고 어디에 지뢰가 있는지 추론해 피하는 것이 목표다. 해커뉴스에 소개된 웹 게임 '해바라기(Sunflowers)'는 이 구도를 뒤집는다. 숫자 단서를 근거로 '피해야 할 것'을 찾는 대신, 정원에 해바라기를 심어야 할 자리를 논리적으로 확정해 나간다. 6단계 난이도에 걸쳐 무제한 무료 퍼즐을 제공하고, 별도 설치 없이 브라우저에서 바로 플레이할 수 있다는 점이 이 게임의 표면적 소개다. 그러나 실무자 관점에서 흥미로운 부분은 게임 자체보다, 이 게임이 난이도를 정의하고 검증하는 방식에 있다.

난이도를 '기법'으로 정의하다

대부분의 퍼즐 게임은 난이도를 격자 크기나 채워야 할 칸 수 같은 겉보기 지표로 나눈다. 해바라기는 다르다. 이 게임은 하나의 논리 엔진이 모든 격자를 처음부터 끝까지 실제로 풀어 보고, 그 과정에서 어떤 추론 기법이 반드시 동원되어야 했는지를 기록한다. 엔진은 언제나 가장 단순한 수부터 두는 방식으로, 신중한 사람이 풀듯 한 수씩 진행한다. 추론 기법은 다섯 가지로 구분되며, 각 격자의 등급은 그 격자가 강제한 가장 어려운 기법의 이름을 따른다.

구체적으로 보면 단계가 올라갈수록 요구되는 추론의 깊이가 달라진다. Medium은 두 단서를 묶어 판단하는 부분집합(subset) 수를 일정 개수 이상 강제하고, Hard는 단서가 겹치는 영역을 활용하는 오버랩(overlap) 수를 요구하되 최소 하나의 부분집합 수도 포함시킨다. Extreme부터는 '가정법(what-if)'이 등장한다. 특정 칸에 해바라기가 있다고 가정한 뒤 어떤 단서가 모순을 일으키는지 지켜보는 방식이다. 이때 단순히 가정법이 몇 번 필요한가가 아니라, 그 추론의 연쇄가 몇 단계까지 이어지는지가 핵심이다. 1단계 가정은 오버랩과 별 차이가 없지만, 4단계로 이어지는 연쇄는 전혀 다른 경험이 된다.

점수와 예상 시간을 계산하는 방식

가장 어려운 Insane 등급은 Extreme의 연쇄 상한을 넘어서는 것은 물론, '양방향(either-way)' 수까지 요구할 수 있다. 두 가정이 모두 살아남으면서도 제3의 칸에 대해서는 같은 결론을 내리는 지점으로, 게임에서 가장 희귀한 논리라고 설명된다. 이 모든 판단은 0~100 점수로 환산되어 각 등급의 구간에 배치된다. Easy는 4~19, Medium 20~39, Hard 40~59, Extreme 60~79, Insane 80~100으로 구간이 겹치지 않게 설계됐다. 따라서 62점 격자는 언제나 40점 격자보다 실제로 더 어렵다는 보장이 성립한다.

예상 소요 시간도 추정이 아니라 작업량의 합산으로 계산된다. 일상적 표시는 칸당 약 1초, 기본 추론 발견에 약 2초, 부분집합 약 14초, 오버랩 약 26초, 가정법은 15초에 단계당 10초씩, 두 단계 양방향은 35초에 단계별 비용이 더해지는 식이다. 이 가중치는 소스 코드의 EST_TIME에 정의돼 있어, 실제 풀이 시간과 어긋나면 조정할 수 있게 열려 있다. 난이도라는 주관적 감각을 재현 가능한 수치로 환원하려는 시도가 곳곳에 배어 있다.

생성기의 규칙과 실무적 함의

격자 생성 과정에도 명시적 규칙이 붙는다. 값이 0인 칸은 ZERO_CLUE_RULES를 따르는데, Easy와 Medium은 0 타일을 한두 개, Hard는 정확히 하나, Extreme과 Insane은 아예 두지 않는다. 생성기는 가지치기 과정에서 꼭 필요한 0을 보호하고, 여분은 먼저 제거하며, 부족하면 하나를 주입하고, 그래도 규칙을 어기면 해당 격자를 폐기한다. 사용자가 슬라이더로 요구 조건을 조이면 한 번의 클릭마다 최대 90개의 후보를 시도하고, 조건에 맞는 것이 없으면 가장 근접한 격자를 대신 내놓으며 보드 아래에 그 사실을 표시한다. 이는 슬라이더를 조금 풀거나 더 큰 보드로 옮기라는 신호다. 까다로운 격자는 큰 보드에서 더 자주 나오기 때문이다.

이 게임이 개발자에게 주는 시사점은 분명하다. 절차적 콘텐츠 생성에서 '난이도'를 크기나 무작위성 같은 대리 지표로 뭉뚱그리는 대신, 실제 해법 경로를 시뮬레이션해 요구 기법을 측정하는 접근이 얼마나 정밀해질 수 있는지를 보여준다. 힌트 시스템과 난이도 판정이 동일한 엔진을 공유하기 때문에, 플레이어가 받는 도움과 게임이 스스로 매긴 난이도 사이에 괴리가 생기지 않는다는 점도 설계적으로 깔끔하다.

다만 한계도 함께 짚어야 한다. 이 정교한 측정은 어디까지나 엔진이 채택한 '가장 단순한 수 우선' 전략을 기준으로 한 것이어서, 사람마다 다른 풀이 스타일이나 직관적 지름길은 반영되지 않는다. 예상 시간의 가중치가 소스에 하드코딩돼 있어 실제 사용자 데이터와 어긋날 수 있다는 점을 개발자 스스로 인정하는 대목도 그 방증이다. 또한 후보 90개 시도 후 근접 격자로 타협하는 구조는, 극단적 조건에서는 사용자가 원한 정확한 난이도를 항상 얻지는 못한다는 뜻이기도 하다. 그럼에도 난이도를 검증 가능한 명제로 다루려는 태도 자체는, 퍼즐이든 게임 밸런싱이든 규칙 기반 콘텐츠를 만드는 이들이 참고할 만한 사례로 남는다.

이 뉴스가 유용했나요?

TTJ 코딩클래스 정규반

월급 외 수입,
코딩으로 만들 수 있습니다

17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.

144+실전 강의
17개수익 모델
4.9수강생 평점
정규반 자세히 보기

"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"

실제 수강생 후기
  • 비전공자도 6개월이면 첫 수익
  • 20년 경력 개발자 직강
  • 자동화 프로그램 + 소스코드 제공

매일 AI·개발 뉴스를 받아보세요

주요 테크 뉴스를 매일 아침 이메일로 전해드립니다.

스팸 없이, 언제든 구독 취소 가능합니다.