※ Picma, Picross quest 같은 네모네모로직 하는 방법을 글에서 분리해 따로 정리.
네모네모로직 푸는 방법
좀 더 많은 분들이 로직 게임에 재미를 붙이길 바라는 마음에서 퍼즐을 해결하는데 필요한 모든 기술을 정리해보았다.
복잡한 로직을 풀다가 포기하신 분들도 이 해결법을 이용해서 다시 도전해 보시길.
(그림 및 방법 출처 Wikipedia - Nonogram)
우선 할 수 있는 일은 반드시 채워지는 공간을 알아내는 것이다. 가로 방향으로 열 칸짜리 로직에서 숫자 8이 있다면, 그 줄은 빈칸 2칸과 채워지는 칸 8칸이 있다는 뜻이다. 8이 위치할 수 있는 방법은 가장 왼쪽에서부터 채워지는 것부터 빈칸을 두 칸 띄우고 가장 오른쪽에 채워지는 것까지 총 세 가지가 있다. (8-2, 1-8-1, 2-8 식으로 세 가지) 모든 경우를 고려하면 반드시 채워지는 교집합 부분이 생긴다. 간단하게 계산하는 방법은 가장 왼쪽에 위치하는 경우와 가장 오른쪽에 위치하는 경우를 놓고 공통된 부분을 체크하는 것이다. 이것을 응용하면 숫자가 나눠져있는 경우에도 사용할 수 있다. 왼쪽의 설명 그림에서는 4와 3이 동시에 움직이는 모습을 보여주지만, 하나씩 생각할 수 있다. 우선 4가 가장 왼쪽에 있다고 생각하면, 4 다음에는 꼭 빈 칸이 한 칸 온다. 남은 다섯칸 중에서 3이 배치되는 방법은 3-2, 1-3-1. 2-3의 세 가지 경우이다. 모든 경우에서 공통되는 부분은 가운데 한 칸(그림에서 오른쪽에 있는 파란색 네모 부분)이다. 반대로 3을 가장 오른쪽에 붙여놓고, 4가 움직일 수 있는 범위 중에서 교집합 부분을 생각하면 왼쪽의 파란 두 칸이 나오게 된다. |
아무 것도 없어야 하는 공간을 찾는 방법도 있다. 왼쪽 그림의 상황은 네번째 칸과 아홉 번째 칸이 이미 해결되어 색이 칠해진 상황이다. 칠해진 네번째 칸은 3의 일부분이다. 3이 위치하는 경우는 가장 왼쪽에 있는 경우 (2 + 칠해진 네번째 칸 1)부터 가장 오른쪽에 있는 경우까지 세 가지이다. (2+1, 1+1+1, 1+2 같은 방법으로 세 가지) 가장 왼쪽에 위치하는 경우에도 첫번째 칸은 빈 칸이 될 수밖에 없으니까 X 표시를 해둔다. 다음으로 아홉번째 칸에 칠해진 부분이 1이라는 것이 밝혀진 상황이기 때문에 1의 왼쪽과 오른쪽으로 X 표시를 한다. 3이 가장 오른쪽으로 가는 경우에도 일곱번째 칸까지는 갈 수 없다. 3이 아니라면 그 칸에 있을 수 있는 숫자는 없기 때문에 일곱번째 칸은 빈 칸이 된다. |
왼쪽 윗 부분의 그림과 같이 X가 위치한다면 가운데는 1이 아닌 이상 들어갈 수 없다. 3과 2 이외에 다른 숫자는 없으므로 일단 가운데 부분에 X를 친다. 왼쪽으로는 네 칸, 오른쪽으로는 세 칸의 빈 공간이 남는다. 한 쪽에 3과 2가 동시에 들어갈 수는 없기 때문에 왼쪽은 3, 오른쪽은 2가 들어갈 공간이 된다. 교집합을 찾는 방법을 적용하면 파란색처럼 왼쪽 두 칸, 오른쪽 한 칸이 채워진다. |
이 그림과 같이 세번째 칸이 밝혀진 상황이면 네번째와 다섯번째 칸은 칠해질 수밖에 없다. 5는 한 덩어리이기 때문에 세번째 칸이 5의 오른쪽 마지막 부분이 될 수 없기 때문이다. (5가 가장 왼쪽으로 위치하는 경우를 생각했을 때 첫번째 칸 왼쪽 너머로 색칠할 수는 없다. 세번째부터 다섯번째까지 세 칸이 칠해진 경우를 놓고 생각해보시기를. 5가 있을 수 있는 모든 경우를 생각해보면 실질적으로 세 칸이 칠해진 상황과 지금 상황은 같은 상황이다.) 이 경우는 한쪽을 밀면 다른쪽이 튀어나오는 물체를 상상하면 편하다. 세번째 칸에서 왼쪽으로 5를 밀면 반대편으로 두 칸이 튀어나오는 식으로 생각하면 쉽게 칠할 수 있다. 중간에 X가 있는 경우에도 마찬가지로 적용할 수 있다. 3이 한 덩어리이기 때문에 파란색 공간은 칠해져야 하는 자리이다. |
왼쪽 그림처럼 밝혀졌다면, 각자 어떤 숫자에 해당하는지 알 수 있다. 제일 왼쪽부터 생각해보자. 세번째와 네번째 칸이 2라면 5가 있을 곳은 없다. 그렇기 때문에 세번째와 네번째칸은 5의 일부분이다. 열한번째와 열세번째 칸이 칠해진 상태이고 둘이 만난다면 존재하지 않는 3이 생겨난다. 그렇기 때문에 열한번째와 열 세번째는 서로 다른 두 숫자 2와 2가 된다. 여섯번째와 일곱번째칸은 2가 아니라는 것이 밝혀졌기 때문에 세번째와 네번째칸과 함께 5의 일부라는 것을 알 수 있다. 색칠해서 5를 만든다. 열한번째와 열세번째 칸은 서로 다른 숫자이기 때문에 가운데(열두번째칸)에는 아무 것도 올 수 없다. X를 친다. 자연스럽게 열번째와 열네번째 칸을 칠할 수밖에 없다. 5, 2, 2가 모두 밝혀졌다. |
아무 것도 없는 공간을 찾는 다른 방법이다. 4는 왼쪽, 가운데, 오른쪽의 세 가지 경우로 배치할 수 있다. 왼쪽으로 배치되는 경우에도 첫번째와 두번째칸까지는 가지 않으므로 그곳은 X이다. 가장 오른쪽으로 배치되는 경우에도 마찬가지로 우측에 두 개의 X가 쳐지게 된다. |
이번엔 가정법으로 알려진 방법이다. 한 줄 이상을 생각해 모순점을 찾거나 채울 수 있는 공간을 알아내는 방법이다. 첫번째 그림처럼 X와 검은 네모로 밝혀진 칸이 나왔다. 가로 첫째 줄(1,2)의 1은 왼쪽이나 오른쪽 두 빈칸(첫번째 칸이나 세번째 칸) 가운데 한 곳에 오게 된다. 우선, 동그라미가 있는 곳이 1이라고 가정한다. 따라서 두번째 그림처럼 첫번째 칸은 X라고 가정하게 된다. 세로줄 첫째는 3이므로 남은 다섯 개의 칸 중 세번째 칸이 어떤 경우에도 교집합이 되는 부분이다. 따라서 가로줄 네번째 3은 동그라미 처럼 칠해진다. 그렇지만 1이라고 가정했던 공간(첫번째 가로줄 세번째 칸)은 동시에 세로 세번째 줄 2가 오는 것으로 가정한 공간이기 때문에 밑으로는 아무 것도 올 수 없다. 이렇게 가로 첫번째 줄에서 두 빈칸 중 오른편을 1이라고 가정한 경우 모순되는 결과가 나오기 때문에 그곳은 1이 올 수 없다. |