게임 가이드게임 공략 · 18/27
네모로직을 찍지 않고 푸는 줄 읽기 기법
겹침, 가장자리, 빈칸 확정, 교차 네 가지로 우리 네모로직의 판은 추측 없이 풀립니다. 게임 엔진의 줄 풀이기로 계산한 예시와 크기별 통계를 함께 정리했습니다.
Bob10분 읽기
핵심 요약
- 단서 합에 사이 빈칸을 더해 줄 길이에서 빼면 여유가 나오고, 여유보다 긴 덩어리는 그 차이만큼 먼저 칠할 수 있습니다
- 숫자만 보고 끝까지 풀린 판은 5×5 1,000판 중 13.6%, 10×10 500판 중 1.2%, 15×15 300판 중 0판이라 교차가 꼭 필요합니다
- 가로 전체와 세로 전체를 한 바퀴로 셀 때 10×10은 평균 2.4바퀴, 15×15는 평균 3.4바퀴가 걸렸습니다
목차
10칸 줄에 단서가 '8' 하나뿐입니다. 아직 한 칸도 칠하지 않았지만 6칸은 이미 확실합니다. 8칸짜리 덩어리를 왼쪽 끝에 붙여도, 오른쪽 끝에 붙여도 가운데 6칸은 늘 칠해지기 때문입니다. 네모로직은 이렇게 '어디로 밀어도 같은 칸'을 줄마다 찾아 가는 퍼즐입니다. 이 글은 그 찾는 순서와 눈 버릇을 정리합니다.
예시는 모두 이 사이트 네모로직의 줄 풀이기(solveLine)로 직접 계산한 결과입니다. 줄 풀이기는 한 줄에서 단서에 맞는 모든 배치를 따져 보고, 모든 배치에서 같은 칸만 확정합니다. 사람은 이 계산을 겹침, 가장자리, 빈칸 확정이라는 몇 가지 읽는 법으로 나눠 쓰고, 한 줄에서 막히면 다른 방향의 줄로 넘어갑니다. 크기별 수치는 게임과 같은 판 생성기로 만든 판에서 잰 값이고, 조건은 표 앞에 적었습니다.
한눈에 보기
| 기법 | 무엇을 보나 | 예 |
|---|---|---|
| 겹침 | 덩어리를 한쪽 끝으로 몰았을 때와 반대쪽 끝으로 몰았을 때 같은 칸 | 10칸 줄의 8 → 가운데 6칸 |
| 꽉 찬 줄 | 숫자 합에 사이 빈칸을 더한 값이 줄 길이와 같은가 | 10칸 줄의 4 1 3 → 줄 전체 |
| 가장자리 | 줄 끝 칸이 이미 칠해져 있는가 | 끝에 닿은 4칸 덩어리 → 바로 옆 칸은 X |
| 빈칸 확정 | 어느 덩어리도 닿지 못하는 칸, 완성된 덩어리의 양옆 | 1 1 줄에서 1을 둘 다 찾으면 나머지는 X |
| 교차 | 가로줄에서 나온 칸을 세로줄에, 세로줄에서 나온 칸을 가로줄에 | 가로줄의 X 하나가 세로줄의 2를 확정 |
겹침: 숫자만으로 먼저 칠하는 칸
겹침은 아무것도 칠하지 않은 줄에서 바로 쓸 수 있는 계산입니다.
- 단서의 숫자를 모두 더하고, 덩어리 사이마다 1을 더합니다. 덩어리들을 빈틈없이 붙여 놓았을 때 필요한 칸 수입니다.
- 줄 길이에서 그 값을 뺍니다. 이것이 여유입니다. 덩어리들이 좌우로 움직일 수 있는 최대 칸 수입니다.
- 여유보다 긴 덩어리는 (덩어리 길이 − 여유)칸이 어느 배치에서든 칠해집니다. 자리는 그 덩어리를 가장 왼쪽에 붙였을 때 오른쪽 끝에서 그만큼입니다.
| 줄 길이 | 단서 | 필요한 칸 | 여유 | 엔진이 확정한 칸 (# 칠함, . 아직 모름) |
|---|---|---|---|---|
| 10 | 8 | 8 | 2 | ..######.. |
| 10 | 4 4 | 9 | 1 | .###..###. |
| 10 | 6 | 6 | 4 | ....##.... |
| 10 | 5 | 5 | 5 | .......... |
| 10 | 3 3 | 7 | 3 | .......... |
| 15 | 4 3 5 | 14 | 1 | .###..##..####. |
| 5 | 3 | 3 | 2 | ..#.. |
덩어리가 여러 개일 때는 같은 덩어리끼리 겹쳐야 합니다. 10칸 줄의 '3 3'은 여유가 3이라 어느 덩어리도 겹치지 않고, 한 칸도 정해지지 않습니다. 가운데에서 첫째 덩어리 후보와 둘째 덩어리 후보가 만나더라도 서로 다른 덩어리라면 칠할 근거가 되지 못합니다. 이 공식은 영어권 해설에서 simple boxes라고 부르는 방법과 같은 계산입니다. 빈 줄을 뺀 모든 단서 조합을 줄 길이 5, 10, 15에 대해 엔진 결과와 맞춰 보니(각각 12개, 143개, 1,596개) 불일치가 하나도 없었습니다.
숫자 합에 사이 빈칸을 더한 값이 줄 길이와 같으면 여유가 0이라 배치가 하나뿐입니다. 이것이 꽉 찬 줄입니다. 10칸 줄의 '4 1 3'은 4+1+3에 사이 빈칸 둘을 더해 정확히 10이라 엔진 결과가 ####x#x###입니다(x는 빈칸). '7 2'도 7+2+1로 10이라 #######x##입니다. 숫자를 더할 때 사이 빈칸을 빼먹고 8로 계산하는 실수가 흔하니 조심하세요.
가장자리와 빈칸 확정: X도 정보입니다
그림은 같은 10×10 판 하나를 엔진으로 풀며 뽑은 다섯 장면입니다. 파란색이 그 단계에서 새로 정해진 칸입니다.
가장자리
줄의 끝 칸이 칠해져 있으면 그 끝에서 가까운 덩어리가 거기서 시작합니다. 그림의 4번 세로줄은 단서가 '1 1 4'이고 아래 끝에 4칸이 이미 칠해져 있습니다. 이 4칸이 마지막 덩어리 '4'이므로 바로 위 칸은 반드시 X입니다. 영어권에서는 glue라고 부르는 방법입니다.
끝 칸이 아니어도 비슷하게 읽을 수 있습니다. 10칸 줄에 단서가 '3' 하나이고 4번째 칸이 칠해져 있다면, 3칸 덩어리는 4번째 칸을 덮어야 하므로 2번째에서 6번째 칸 사이에만 놓일 수 있습니다. 엔진 결과는 x..#..xxxx로, 첫 칸과 7번째 이후가 모두 X입니다.
닿지 못하는 칸
그림의 1번 가로줄은 단서가 '2 2'이고 양 끝이 X, 3번째와 8번째 칸이 칠해져 있습니다. 첫 덩어리는 3번째 칸을 덮고, 둘째 덩어리는 8번째 칸을 덮습니다. 두 덩어리가 어떻게 움직여도 가운데 5번째와 6번째 칸에는 닿지 못하니 그 두 칸은 X입니다. 칠한 칸이 늘수록 덩어리가 움직일 수 있는 범위가 좁아지고, 그 범위 밖 칸이 X로 바뀝니다.
완성된 줄
한 줄에서 칠한 덩어리가 단서와 모두 같아지면 남은 칸은 전부 X입니다. 그림의 3번 가로줄은 단서가 '1 1'이고 3번째와 8번째 칸을 칠하면 끝납니다. 이때 우리 게임은 그 줄 단서에 취소선을 긋고 색을 옅게 바꿔서, 그 줄이 끝났다는 것을 알려 줍니다. 단서가 옅어지면 그 줄에 남은 빈 칸에 X를 한꺼번에 치고 지나가는 습관을 들이세요. X는 그 칸이 속한 다른 방향 줄에게 가장 믿을 만한 단서가 됩니다.
숫자만으로는 얼마나 정해질까
첫 단서를 어디서 찾을지 감을 잡기 위해, 게임의 판 생성기로 5×5 1,000판, 10×10 500판, 15×15 300판을 만들었습니다. 각 판의 모든 가로줄과 세로줄에 줄 풀이기를 한 번씩, 아무것도 칠하지 않은 상태로 돌려 숫자만으로 정해지는 칸을 센 결과입니다. 한 줄이 풀어 낸 칸을 다른 줄에서 다시 쓰지 않으므로 교차는 들어 있지 않습니다. 판은 시드 번호를 바꿔 가며 만들었고, 게임도 새 판마다 같은 생성기에 무작위 시드를 넣으니 같은 종류의 판입니다.
| 크기 | 판 수 | 숫자만으로 칸이 정해지는 줄 (평균) | 그중 꽉 찬 줄 (평균) | 칠할 칸 중 숫자만으로 정해진 비율 (평균) | 숫자만으로 끝까지 풀린 판 |
|---|---|---|---|---|---|
| 5×5 | 1,000 | 7.1줄 (전체 10줄) | 2.8줄 | 82.6% | 136판 (13.6%) |
| 10×10 | 500 | 13.0줄 (전체 20줄) | 4.0줄 | 78.8% | 6판 (1.2%) |
| 15×15 | 300 | 18.5줄 (전체 30줄) | 3.7줄 | 66.5% | 0판 |
세 크기 모두 첫 단서가 한 줄도 없는 판은 없었습니다. 칠할 칸의 약 3분의 2에서 83%가 숫자만으로 정해지니 시작은 어렵지 않습니다. 하지만 숫자만으로 끝까지 풀리는 판은 5×5에서도 7판 중 1판꼴이고, 10×10부터는 거의 없습니다. 겹침과 꽉 찬 줄은 출발점일 뿐이고, 나머지는 교차로 풀어야 합니다. 한 판에 꽉 찬 줄이 평균 3~4줄 있으니 그 줄부터 찾는 것이 빠릅니다.
교차: 한 줄이 막히면 다른 방향으로
그림은 5×5 한 판의 풀이 순서입니다. 가로 단서는 위에서부터 1 1, 2 1, 1, 4, 5이고 세로 단서는 왼쪽부터 2, 1 2, 2 2, 3, 2 1입니다.
- 가로줄을 한 번씩 읽습니다. 5번 줄 '5'는 꽉 찬 줄이라 전체를 칠합니다. 4번 줄 '4'는 여유가 1이라 가운데 3칸이 정해지고, 2번 줄 '2 1'은 필요한 칸이 4, 여유가 1이라 '2'의 한 칸만 정해집니다. 1번 줄 '1 1'과 3번 줄 '1'은 여유가 커서 아직 아무것도 없습니다.
- 세로줄을 한 번씩 읽습니다. 이제 세로줄에는 가로줄에서 얻은 칸이 들어 있습니다. 1번 세로줄은 '2'인데 맨 아래 칸이 칠해져 있으니 아래 두 칸이 그 덩어리고 위 세 칸은 X입니다. 5번 세로줄 '2 1'은 맨 아래 칸이 '1'이어서 그 바로 위가 X가 되고, 위쪽 세 칸 안에 '2'가 놓입니다. 이 한 번으로 나머지 칸이 거의 정해집니다.
- 남은 가로줄을 읽습니다. 1번 가로줄 '1 1'은 칠한 칸이 하나뿐이고 남은 빈 자리가 한 칸이라 둘째 1이 거기 들어갑니다. 3번 가로줄 '1'은 칠한 칸이 이미 하나라 남은 칸이 X입니다.
가로줄과 세로줄을 번갈아 읽는 것을 한 바퀴로 세고, 칠할 칸이 모두 정해질 때까지 몇 바퀴가 걸리는지 같은 판들로 쟀습니다. 한 바퀴는 가로줄 전체를 위에서 아래로 읽은 뒤 세로줄 전체를 왼쪽에서 오른쪽으로 읽는 것입니다. 앞 줄에서 얻은 칸은 바로 다음 줄에 씁니다.
| 크기 | 1바퀴 | 2바퀴 | 3바퀴 | 4바퀴 | 5바퀴 이상 | 평균 |
|---|---|---|---|---|---|---|
| 5×5 (1,000판) | 26.4% | 60.9% | 11.0% | 1.5% | 0.2% | 1.88바퀴 |
| 10×10 (500판) | 5.4% | 64.8% | 22.2% | 4.6% | 3.0% | 2.39바퀴 |
| 15×15 (300판) | 0% | 25.0% | 42.0% | 19.3% | 13.7% | 3.38바퀴 |
계산에 쓴 판 1,800개는 모두 줄 풀이만으로 끝까지 풀렸습니다. 추측이 필요한 판이 없다는 뜻이고, 우리 게임의 소개 문구와 맞습니다. 이 수치는 위에서 아래, 왼쪽에서 오른쪽으로 읽는 순서를 고정해 잰 것이라, 순서를 바꾸면 바퀴 수는 달라질 수 있습니다. 15×15는 3바퀴 이상 걸린 판이 4분의 3이니, 가로와 세로를 오가는 일을 귀찮아하지 않는 쪽이 빠릅니다.
앞의 그림 맨 아래 장면도 교차의 예입니다. 2번 세로줄 '2 6'에서 3번째 칸이 X입니다. 이 X는 3번 가로줄을 완성하며 생긴 것입니다. 그 위로 칸이 두 개뿐이니 '2'는 거기에 들어가야 하고, 비어 있던 첫 칸이 칠해집니다. 한 줄의 X가 다른 방향 줄의 덩어리를 한쪽으로 몰아 주는 방식입니다.
5칸마다 그어진 선으로 위치 읽기
10×10과 15×15 판에는 5칸마다 가로세로로 옅은 구분선이 그어져 있습니다. 10×10은 가운데에 가로세로 한 줄씩, 15×15는 두 줄씩입니다(5×5에는 없습니다). 겹침으로 정해진 칸이 몇 번째인지 일일이 세다 보면 한 칸씩 어긋나기 쉬운데, 선을 기준으로 5칸 묶음 안에서 읽으면 줄어듭니다.
15칸 줄의 '4 3 5'는 필요한 칸이 14라 여유가 1입니다. 엔진 결과 .###..##..####.을 5칸 묶음으로 나눠 읽으면 이렇습니다.
- 첫 묶음(1~5번째): 2번째부터 4번째 칸
- 둘째 묶음(6~10번째): 2번째와 3번째 칸
- 셋째 묶음(11~15번째): 1번째부터 4번째 칸
묶음 안에서 위치를 말하고 손가락으로 선을 짚으면 열다섯 칸을 한 번에 세지 않아도 됩니다.
막혔을 때의 순서
- 꽉 찬 줄(숫자 합에 사이 빈칸을 더한 값이 줄 길이인 줄)을 모두 칠합니다.
- 큰 숫자가 있는 줄에서 겹침을 계산해 칠합니다.
- 끝 칸이 칠해진 줄에서 가장자리를 읽습니다.
- 완성된 덩어리의 양옆과 완성된 줄의 나머지 칸에 X를 칩니다.
- 덩어리가 닿지 못하는 칸에 X를 칩니다.
- 방향을 바꿔 같은 일을 하고, 새로 정해진 칸이 있는 줄만 다시 읽습니다.
6번에서 바꿔 읽은 줄이 끝나도 진전이 없다면 놓친 줄이 있다는 뜻입니다. 우리 게임의 판은 줄 풀이만으로 끝까지 풀리도록 만들어지므로 찍어서 확인할 필요가 없습니다.
흔한 실수
- 다른 덩어리끼리의 겹침을 칠하기. '3 3'처럼 후보가 서로 닿는 칸이 있어도 같은 덩어리가 겹친 것이 아니면 확정이 아닙니다.
- 사이 빈칸을 빼고 계산하기. '4 1 3'은 8이 아니라 10이 필요합니다. 여유를 크게 잡으면 겹침을 놓칩니다.
- X를 치지 않고 칠할 칸만 보기. 완성된 덩어리 옆의 X를 치지 않으면 다음 줄이 쓸 정보가 줄어듭니다.
- 자신 없는 칸에 X를 치기. 실수 표시를 켜 두면 그림에 없는 칸을 칠하거나 그림에 있는 칸에 X를 치는 순간 붉게 표시되고 실수로 세어집니다. 되돌려도 횟수는 그대로입니다.
- 한 방향으로만 끝까지 가기. 가로줄에서 더 얻을 것이 없어 보여도 세로줄에는 가로줄이 준 칸이 쌓여 있습니다.
연습 방법
- 5×5로 바퀴 세기. 가로 한 번, 세로 한 번이 한 바퀴입니다. 5×5의 87%는 2바퀴 안에 끝나니 몇 바퀴에 끝나는지 세어 보세요.
- 10×10은 시작 전에 줄을 표시하기. 스무 줄을 훑어 꽉 찬 줄과 큰 숫자를 먼저 찾습니다. 시작 10초가 판 전체의 속도를 정합니다.
- 오늘의 퍼즐로 시간 재기. 오늘의 퍼즐은 한국 시간으로 하루 동안 모두 같은 10×10 판이 나옵니다. 같은 판에서 시간을 줄이는 연습에 좋습니다.
- 조작 익히기. 한 줄을 끌면 같은 줄 안에서 이어서 칠해지고, 칠한 칸에서 시작해 끌면 지워집니다. 오른쪽 클릭이나 Shift를 누른 채 클릭하면 지금 도구의 반대(칠하기와 X)로 칠할 수 있고, 키보드는 F가 칠하기, X가 X 표시, T가 도구 바꾸기, Ctrl·⌘+Z가 되돌리기입니다.
- 15×15는 한 판에 3바퀴 이상 걸린다고 생각하기. 15×15의 4분의 3이 3바퀴 이상 걸렸습니다. 막힌 게 아니라 아직 돌아올 차례인 겁니다.
정리
네모로직은 줄 하나에서 모든 배치에 공통인 칸을 찾는 퍼즐입니다. 숫자 합과 사이 빈칸으로 여유를 구해 겹침을 칠하고, 끝 칸과 완성된 덩어리로 X를 늘리고, 그 X와 칠한 칸을 다른 방향의 줄에 넘기면 됩니다. 우리 게임에서는 판 1,800개가 모두 줄 풀이만으로 끝까지 풀렸고, 숫자만 보고 끝난 판은 10×10에서 1.2%, 15×15에서는 한 판도 없었습니다. 설명한 기법은 네모로직에서 바로 연습해 볼 수 있습니다.
참고 자료
- Wikipedia: Nonogram (기법 이름과 겹침 계산 방법, 2026-10-01 확인)
- 우리 네모로직 엔진의 줄 풀이기와 판 생성기로 계산한 값(코드는 이 사이트 저장소의
features/games/nonogram/engine.ts)
도움이 됐다면 공유해 주세요
글쓴이
Bob
개발자로 일하면서 경제 지표와 시장 데이터를 직접 찾아보고 정리해 왔습니다. 공식 통계와 1차 자료를 기준으로, 처음 보는 사람도 흐름을 따라올 수 있게 씁니다.
운영 원칙 보기게임 공략
27편- 2048 모서리 전략과 뱀 모양 배열
- 지뢰찾기 1-2-1 패턴과 확률 계산
- 스도쿠를 찍지 않고 푸는 기본 기법
- 숫자야구는 몇 번 만에 맞힐 수 있을까
- 오목 열린 3과 4-3 공격, 첫 수와 금수 정리
- 솔리테어 잘 푸는 습관 다섯 가지
- 사과 게임, 짝부터 지울까 크게 묶을까
- 블록 쌓기, 4줄 한 번에와 연속 지우기 중 무엇이 점수가 클까
- 블록 끼우기에서 오래 버티는 배치
- 벽돌깨기, 패들 어디에 맞히느냐가 점수를 가릅니다
- 버블 팡, 터뜨리기보다 떨어뜨리기가 큰 이유
- 파닥파닥 비행, 틈 가운데보다 어디를 노려야 할까
- 과일 합치기에서 어디에 떨어뜨려야 점수가 오를까
- 보석 맞추기, 아래부터 맞추면 정말 점수가 오를까
- 동네 가게 키우기, 회수 기간 순서로 사면 얼마나 빨라질까
- 카드 짝 맞추기 어려움 판을 24번 안에 끝내려면
- 도시 방어, 탄두보다 얼마나 앞을 찍어야 할까
- 네모로직을 찍지 않고 푸는 줄 읽기 기법지금 읽는 글
- 가격 정하기 10일에서 이익이 가장 큰 가격 찾기
- 반응속도 테스트, 찍어서 누르면 왜 손해일까
- 길 건너기에서 오래 살아남는 법, 봇 2,000판으로 비교
- 색 순서 기억하기, 10단계를 넘기는 끊어 외우기
- 숫자 밀기 퍼즐 윗줄부터 맞추는 법과 마지막 두 장
- 스네이크, 먹이로 곧장 갈까 판을 돌까
- 우주 방어, 바깥 열부터 없애면 시간이 얼마나 벌릴까
- 탑 쌓기 퍼펙트 타이밍 오차와 층수
- 두더지 잡기, 점수는 몇 마리보다 연속이 가릅니다
읽은 내용을 게임으로
네모로직
숫자를 단서로 숨은 그림을 찾아요