본문으로 건너뛰기
bobob

게임 가이드게임 공략 · 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. 단서의 숫자를 모두 더하고, 덩어리 사이마다 1을 더합니다. 덩어리들을 빈틈없이 붙여 놓았을 때 필요한 칸 수입니다.
  2. 줄 길이에서 그 값을 뺍니다. 이것이 여유입니다. 덩어리들이 좌우로 움직일 수 있는 최대 칸 수입니다.
  3. 여유보다 긴 덩어리는 (덩어리 길이 − 여유)칸이 어느 배치에서든 칠해집니다. 자리는 그 덩어리를 가장 왼쪽에 붙였을 때 오른쪽 끝에서 그만큼입니다.
줄 길이단서필요한 칸여유엔진이 확정한 칸 (# 칠함, . 아직 모름)
10882..######..
104 491.###..###.
10664....##....
10555..........
103 373..........
154 3 5141.###..##..####.
5332..#..

덩어리가 여러 개일 때는 같은 덩어리끼리 겹쳐야 합니다. 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도 정보입니다

한 줄을 푸는 다섯 장면. 겹침, 가장자리, 닿지 못하는 칸 X, 완성 줄 X, 교차를 전과 후로 비교
한 줄을 푸는 다섯 장면. 겹침, 가장자리, 닿지 못하는 칸 X, 완성 줄 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×51,0007.1줄 (전체 10줄)2.8줄82.6%136판 (13.6%)
10×1050013.0줄 (전체 20줄)4.0줄78.8%6판 (1.2%)
15×1530018.5줄 (전체 30줄)3.7줄66.5%0판

세 크기 모두 첫 단서가 한 줄도 없는 판은 없었습니다. 칠할 칸의 약 3분의 2에서 83%가 숫자만으로 정해지니 시작은 어렵지 않습니다. 하지만 숫자만으로 끝까지 풀리는 판은 5×5에서도 7판 중 1판꼴이고, 10×10부터는 거의 없습니다. 겹침과 꽉 찬 줄은 출발점일 뿐이고, 나머지는 교차로 풀어야 합니다. 한 판에 꽉 찬 줄이 평균 3~4줄 있으니 그 줄부터 찾는 것이 빠릅니다.

교차: 한 줄이 막히면 다른 방향으로

5×5 판을 세 단계로 푸는 모습. 가로줄 한 번, 세로줄 한 번, 가로줄로 마무리
5×5 판을 세 단계로 푸는 모습. 가로줄 한 번, 세로줄 한 번, 가로줄로 마무리

그림은 5×5 한 판의 풀이 순서입니다. 가로 단서는 위에서부터 1 1, 2 1, 1, 4, 5이고 세로 단서는 왼쪽부터 2, 1 2, 2 2, 3, 2 1입니다.

  1. 가로줄을 한 번씩 읽습니다. 5번 줄 '5'는 꽉 찬 줄이라 전체를 칠합니다. 4번 줄 '4'는 여유가 1이라 가운데 3칸이 정해지고, 2번 줄 '2 1'은 필요한 칸이 4, 여유가 1이라 '2'의 한 칸만 정해집니다. 1번 줄 '1 1'과 3번 줄 '1'은 여유가 커서 아직 아무것도 없습니다.
  2. 세로줄을 한 번씩 읽습니다. 이제 세로줄에는 가로줄에서 얻은 칸이 들어 있습니다. 1번 세로줄은 '2'인데 맨 아래 칸이 칠해져 있으니 아래 두 칸이 그 덩어리고 위 세 칸은 X입니다. 5번 세로줄 '2 1'은 맨 아래 칸이 '1'이어서 그 바로 위가 X가 되고, 위쪽 세 칸 안에 '2'가 놓입니다. 이 한 번으로 나머지 칸이 거의 정해집니다.
  3. 남은 가로줄을 읽습니다. 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번째 칸

묶음 안에서 위치를 말하고 손가락으로 선을 짚으면 열다섯 칸을 한 번에 세지 않아도 됩니다.

막혔을 때의 순서

  1. 꽉 찬 줄(숫자 합에 사이 빈칸을 더한 값이 줄 길이인 줄)을 모두 칠합니다.
  2. 큰 숫자가 있는 줄에서 겹침을 계산해 칠합니다.
  3. 끝 칸이 칠해진 줄에서 가장자리를 읽습니다.
  4. 완성된 덩어리의 양옆과 완성된 줄의 나머지 칸에 X를 칩니다.
  5. 덩어리가 닿지 못하는 칸에 X를 칩니다.
  6. 방향을 바꿔 같은 일을 하고, 새로 정해진 칸이 있는 줄만 다시 읽습니다.

6번에서 바꿔 읽은 줄이 끝나도 진전이 없다면 놓친 줄이 있다는 뜻입니다. 우리 게임의 판은 줄 풀이만으로 끝까지 풀리도록 만들어지므로 찍어서 확인할 필요가 없습니다.

흔한 실수

  1. 다른 덩어리끼리의 겹침을 칠하기. '3 3'처럼 후보가 서로 닿는 칸이 있어도 같은 덩어리가 겹친 것이 아니면 확정이 아닙니다.
  2. 사이 빈칸을 빼고 계산하기. '4 1 3'은 8이 아니라 10이 필요합니다. 여유를 크게 잡으면 겹침을 놓칩니다.
  3. X를 치지 않고 칠할 칸만 보기. 완성된 덩어리 옆의 X를 치지 않으면 다음 줄이 쓸 정보가 줄어듭니다.
  4. 자신 없는 칸에 X를 치기. 실수 표시를 켜 두면 그림에 없는 칸을 칠하거나 그림에 있는 칸에 X를 치는 순간 붉게 표시되고 실수로 세어집니다. 되돌려도 횟수는 그대로입니다.
  5. 한 방향으로만 끝까지 가기. 가로줄에서 더 얻을 것이 없어 보여도 세로줄에는 가로줄이 준 칸이 쌓여 있습니다.

연습 방법

  • 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편
  1. 2048 모서리 전략과 뱀 모양 배열
  2. 지뢰찾기 1-2-1 패턴과 확률 계산
  3. 스도쿠를 찍지 않고 푸는 기본 기법
  4. 숫자야구는 몇 번 만에 맞힐 수 있을까
  5. 오목 열린 3과 4-3 공격, 첫 수와 금수 정리
  6. 솔리테어 잘 푸는 습관 다섯 가지
  7. 사과 게임, 짝부터 지울까 크게 묶을까
  8. 블록 쌓기, 4줄 한 번에와 연속 지우기 중 무엇이 점수가 클까
  9. 블록 끼우기에서 오래 버티는 배치
  10. 벽돌깨기, 패들 어디에 맞히느냐가 점수를 가릅니다
  11. 버블 팡, 터뜨리기보다 떨어뜨리기가 큰 이유
  12. 파닥파닥 비행, 틈 가운데보다 어디를 노려야 할까
  13. 과일 합치기에서 어디에 떨어뜨려야 점수가 오를까
  14. 보석 맞추기, 아래부터 맞추면 정말 점수가 오를까
  15. 동네 가게 키우기, 회수 기간 순서로 사면 얼마나 빨라질까
  16. 카드 짝 맞추기 어려움 판을 24번 안에 끝내려면
  17. 도시 방어, 탄두보다 얼마나 앞을 찍어야 할까
  18. 네모로직을 찍지 않고 푸는 줄 읽기 기법지금 읽는 글
  19. 가격 정하기 10일에서 이익이 가장 큰 가격 찾기
  20. 반응속도 테스트, 찍어서 누르면 왜 손해일까
  21. 길 건너기에서 오래 살아남는 법, 봇 2,000판으로 비교
  22. 색 순서 기억하기, 10단계를 넘기는 끊어 외우기
  23. 숫자 밀기 퍼즐 윗줄부터 맞추는 법과 마지막 두 장
  24. 스네이크, 먹이로 곧장 갈까 판을 돌까
  25. 우주 방어, 바깥 열부터 없애면 시간이 얼마나 벌릴까
  26. 탑 쌓기 퍼펙트 타이밍 오차와 층수
  27. 두더지 잡기, 점수는 몇 마리보다 연속이 가릅니다