문서 보기문서 편집수정 내역 스도쿠/공략법 (덤프버전으로 되돌리기) [[분류:퍼즐]] [include(틀:상위 문서, top1=스도쿠)] [목차] == 개요 == [[스도쿠]]의 공략법에 대해 정리한 문서. 기본 스도쿠의 공략법 위주로 서술되어 있지만 다른 변형 스도쿠도 대부분 유닛의 종류가 변한 것 뿐이기에 마찬가지의 기법을 적용할 수 있다. 다만 킬러 스도쿠의 경우 [[가쿠로]]의 특징을 지닌 만큼 특별한 공략이 따로 존재하는데 이는 [[스도쿠/공략법/킬러 스도쿠]]를 참조하자. 이 문서는 이해와 설명의 용이성, 각 기법의 적용 범위와 난이도를 모두 고려하여 순서를 배치하였다. 따라서 일부 항목의 경우 그 위치에 비해 적용의 난이도가 높은 경우가 존재한다. 대부분 발상이 동일하되 범위의 확장에 의한 것으로 넘어가도 좋다. == 도입 == === 용어 === 이 문서에서는 다음과 같은 용어를 사용한다. 편집자는 굵게 표시된 용어로 통일하는 것을, 영어를 사용할 때는 한글을 병기하는 것을 권장한다. * '''행(Row)''' : 가로줄. 예를 들어 '''3행'''은 위에서부터 3번째 가로줄을 말한다. * '''열(Column)''' : 세로줄. 예를 들어 '''7열'''은 왼쪽부터 7번째 세로줄을 말한다. * '''칸'''('''Cell''') : 스도쿠를 구성하는 81개의 숫자를 넣는 공간. 이 문서에서는 행을 A~I까지, 열을 1~9까지 사용하여 3행과 7열이 만나는 단 하나의 칸을 셀 C7으로 통일한다.[* r3c7과 같은 표기는 다른 곳에서 볼 수 있으니 알아두면 좋다.] 이때 용어 '셀' 사용을 허용한다. * '''상자'''('''Box''', Block, House, Subgrid, Region) : 3 × 3의 칸으로 이루어져 아래와 같이 배치된다. (정)사각형(Square)이라는 용어는 혼란을 가중시키니 이 표현은 '''절대 금한다'''. ||<:>'''1'''||<:>'''2'''||<:>'''3'''|| ||<:>'''4'''||<:>'''5'''||<:>'''6'''|| ||<:>'''7'''||<:>'''8'''||<:>'''9'''|| * '''유닛(Unit''', House) : 행, 열, 상자를 통틀어 이르는 말. 스도쿠의 규칙은 이 유닛에 1~9까지의 숫자가 들어가는 것이다. * '''바라보다''' : 하나의 유닛 위에 있다, '연관이 있다', '영향력이 있다'로 표기될 수도 있다. * '''후보 숫자'''('''Candidate''', Pencilmark): 스도쿠에서 칸에 들어갈 수 있는 숫자를 정리한 것. === 후보 숫자 === 스도쿠 관련 책자들을 보면 풀다가 막힐 때 후보 숫자를 적어 다른 기술을 쓰는 것을 흔히 볼 수 있다. 거의 대부분의 스도쿠 어플들은 후보 숫자 기능을 지원하지만,[* 특히 대부분의 어플리케이션들의 경우, 한 칸을 맞히고 나면 같은 가로줄/세로줄/박스에 있는 다른 칸들의 후보숫자가 자동적으로 제거되는 기능이 있어 편리하다.] 오프라인에서 종이로 푸는 스도쿠 문제들은 후보 숫자를 적을 칸의 넓이가 부족한 경우가 대다수이다. 이때는 공책 등 다른 곳에다 대충 모양을 크게 그려놓고 거기에 후보 숫자를 대신 적거나, 정말 중요한 부분에만 적어두거나, 아니면 그냥 머릿속으로 다 해결하거나 하는 방법밖에는 없다. 막히는 부분이 있다면 대충 보다가 일을 그르치지 말고 의심되는 부분의 후보 숫자들을 적어나가며 돌파구를 찾는 것이 바람직하다. === 알고리즘 === 난이도가 낮은 스도쿠를 제외한다면 스도쿠를 해결할 때는 자신만의 알고리즘을 가지고 있는 편이 좋다. 아래 예시를 참조하여 자신만의 풀이 방법을 만들어 보자. * 후보 숫자를 사용하지 않는 경우[* 난이도가 낮다고 판단될 때, 논리적이기 보다 빠르게 풀고 싶을 때, 어플이 아닌 종이에 직접 써야할 때 등] 가득찬 유닛(Full House)>숨겨진 하나(Hidden Single)>교차로(Intersection)>X-윙(X-Wing)>드러난 하나(Naked Single)[* 후보 숫자를 사용하지 않는 경우 발견하기 어려워 후순위로 밀렸다. 원한다면 먼저 시행해도 좋다.]>드러난 둘/셋(Naked Pair/Triple)>숨겨진 둘/셋(Hidden Pair/Triple)>유일성 논법 이 이후의 기법은 후보 숫자를 사용하지 않고는 사용하기 힘들다. 후보 숫자를 처음부터 적지 않고 위 알고리즘을 따르다 밑으로 넘어가는 것도 괜찮은 방법이다. * 후보 숫자를 사용하는 경우 기본적으로 이 문서에서 서술되어 있는 순서대로 기초>초급>중급의 순으로 적용해나가면서 후보 숫자를 지워나가고 다시 기초부터 반복하면 된다. 다만 숨겨진 넷, 젤리피쉬와 같은 경우 발상이 동일하여 같이 묶어 놓았지만 발견과 적용 난이도는 숨겨진 둘이나 X-윙보다 매우 높다는 사실에 유의하자. 가득찬 유닛(Full House)>숨겨진 하나(Hidden Single)>드러난 하나(Naked Single)>교차로(Intersection)>X-윙(X-Wing): 여기까진 후보 숫자 하나에만 집중하면 된다. 드러난 둘/셋(Naked Pair/Triple)>숨겨진 둘/셋(Hidden Pair/Triple)>심플 컬러링(Simple Coloring)>XY-윙(XY-Wing)>X-사슬(X-chain)>드러난/숨겨진 넷(Naked/Hidden Quad)>스워드피쉬(Swordfish)>핀드/사시미 X-윙(Finned/Sashimi X-wing)>XY-사슬(XY-Chain)>젤리피쉬(Jellyfish)>기타 피쉬 변형들>기타 고급 기술 [[https://f5game.co.kr/puzzle/sudoku|스도쿠]] 아래에 나와 있는 기술들을 여기에 써먹어보도록 하자. == 기초 == 후보 숫자를 이용하지 않고도 사용할 수 있는 기법들. 어떤 난이도의 스도쿠를 풀든 이 기법들은 반드시 마스터하고 넘어가야 한다. === 가득찬 유닛 === Full House[* 여기서 house는 unit의 의미이다. 용어 통일을 위해 유닛으로 번역한다.] 어떤 유닛에 8개의 숫자가 채워져 있어서 나머지 하나를 바로 채울 수 있는 경우이다. 가장 기본적인 방법이지만 등잔 밑이 어둡다고 다른 풀이법만 보다가 정작 이걸 깜빡하고 넘어가는 경우가 종종 있다. ||<:>1||<:>'''A'''||<:>6||<:>9||<:>8||<:>4||<:>5||<:>3||<:>7|| ||<:>||<:>||<:>||<:>||<:>||<:>||<:>1||<:>6||<:>8|| ||<:>||<:>||<:>||<:>||<:>||<:>||<:>2||<:>4||<:>'''B'''|| 위와 같은 형태에서, A와 B에 들어갈 수 있는 수는 각각의 행과 상자에서 없는 수를 채우면 된다. A에는 2가 들어가고 B에는 9가 들어간다. === 숨겨진 하나 === Hidden Single, Pinned Digit 스도쿠의 규칙 상 한 유닛에는 1~9까지의 숫자가 존재해야한다. 이때 한 유닛 안의 특정 칸 C를 제외한 모든 나머지 칸에 특정한 후보 숫자가 들어가지 못할 때, 특정 칸 C에 그 후보 숫자가 들어가야함을 알 수 있다. 숨겨진 부분집합으로의 확장을 고려한다면 한 유닛 안에 특정 후보 숫자를 가질 수 있는 칸이 하나이기에 그 칸의 다른 후보 숫자를 모두 지울 수 있다고 이해해도 괜찮다. 말로만 들으면 어렵게 보이지만 아래 예시를 보면 스도쿠 전략 중 가장 쉽다는 것을 알 수 있다. ==== 숨겨진 하나(상자) ==== Hidden Single(Box) ||<:>||<:>||<:>||<:>||<:>'''5'''||<:>||<:>'''3'''||<:>'''4'''||<:>|| ||<:>||<:>||<:>'''9'''||<:>||<:>||<:>||<:>'''2'''||<:>'''7'''||<:>|| ||<:>||<:>||<:>||<:>||<:>||<:>'''4'''||<:>||<:>'''8'''||<:>|| ||<:>||<:>'''8'''||<:>'''1'''||<:>'''3'''||<:>||<:>||<:>||<:>'''9'''||<:>'''4'''|| ||<:>'''7'''||<:>||<:>||<:>||<:>'''9'''||<:>||<:>||<:>||<:>'''8'''|| ||<:>'''5'''||<:>||<:>||<:>||<:>||<:>'''8'''||<:>'''7'''||<:>'''2'''||<:>|| ||<:>||<:>'''5'''||<:>||<:>'''7'''||<:>||<:>||<:>||<:>||<:>|| ||<:>||<:>'''2'''||<:>'''8'''||<:>||<:>||<:>||<:>'''5'''||<:>||<:>|| ||<:>||<:>'''1'''||<:>'''7'''||<:>||<:>'''4'''||<:>||<:>||<:>||<:>|| {{{#!folding [ 정답 보기 ] ||<:>8||<:>6||<:>2||<:>9||<:>'''5'''||<:>7||<:>'''3'''||<:>'''4'''||<:>1|| ||<:>1||<:>4||<:>'''9'''||<:>8||<:>6||<:>3||<:>'''2'''||<:>'''7'''||<:>5|| ||<:>3||<:>7||<:>5||<:>1||<:>2||<:>'''4'''||<:>9||<:>'''8'''||<:>6|| ||<:>2||<:>'''8'''||<:>'''1'''||<:>'''3'''||<:>7||<:>5||<:>6||<:>'''9'''||<:>'''4'''|| ||<:>'''7'''||<:>3||<:>4||<:>2||<:>'''9'''||<:>6||<:>1||<:>5||<:>'''8'''|| ||<:>'''5'''||<:>9||<:>6||<:>4||<:>1||<:>'''8'''||<:>'''7'''||<:>'''2'''||<:>3|| ||<:>9||<:>'''5'''||<:>3||<:>'''7'''||<:>8||<:>1||<:>4||<:>6||<:>2|| ||<:>4||<:>'''2'''||<:>'''8'''||<:>6||<:>3||<:>9||<:>'''5'''||<:>1||<:>7|| ||<:>6||<:>'''1'''||<:>'''7'''||<:>5||<:>'''4'''||<:>2||<:>8||<:>3||<:>9|| }}} 6번 상자에서 주어진 숫자는 2, 4, 7, 8, 9이며, 채워넣어야 할 숫자는 1, 3, 5, 6이다. 이 중에서 숫자 5에 주목하면, ||<:>||<:>||<:>||<:>||<:>'''5'''||<:>||<:>'''3'''||<:>'''4'''||<:>|| ||<:>'''9'''||<:>||<:>||<:>||<:>||<:>||<:>'''2'''||<:>'''7'''||<:>|| ||<:>||<:>||<:>||<:>||<:>||<:>'''4'''||<:>||<:>'''8'''||<:>|| ||<:>||<:>'''8'''||<:>'''1'''||<:>'''3'''||<:>||<:>||<:>||<:>'''9'''||<:>'''4'''|| ||<:>'''7'''||<:>||<:>||<:>||<:>'''9'''||<:>||<:>||<:>||<:>'''8'''|| ||<:>'''5'''||<:>||<:>||<:>||<:>||<:>'''8'''||<:>'''7'''||<:>'''2'''||<:>|| ||<:>||<:>'''5'''||<:>||<:>'''7'''||<:>||<:>||<:>||<:>||<:>|| ||<:>||<:>'''2'''||<:>'''8'''||<:>||<:>||<:>||<:>'''5'''||<:>||<:>|| ||<:>||<:>'''1'''||<:>'''7'''||<:>||<:>'''4'''||<:>||<:>||<:>||<:>|| 6번 상자에서 셀 E8을 제외한 어떠한 칸에도 숫자 5가 들어갈 수 없다. 따라서 셀 E8의 정답은 '''5'''이다. ==== 숨겨진 하나(행/열) ==== Hidden Single(Row/Column) ||<:>||<:>||<:>||<:>||<:>'''2'''||<:>||<:>'''3'''||<:>'''4'''||<:>|| ||<:>||<:>||<:>'''9'''||<:>'''4'''||<:>'''6'''||<:>||<:>'''8'''||<:>'''7'''||<:>'''5'''|| ||<:>||<:>||<:>'''4'''||<:>||<:>||<:>'''8'''||<:>'''1'''||<:>||<:>|| ||<:>'''9'''||<:>||<:>||<:>'''8'''||<:>||<:>'''4'''||<:>'''5'''||<:>||<:>|| ||<:>'''4'''||<:>'''5'''||<:>||<:>'''1'''||<:>||<:>'''2'''||<:>||<:>||<:>'''8'''|| ||<:>||<:>||<:>'''7'''||<:>'''6'''||<:>||<:>'''5'''||<:>||<:>||<:>'''4'''|| ||<:>||<:>'''9'''||<:>'''8'''||<:>'''2'''||<:>||<:>'''6'''||<:>'''4'''||<:>||<:>|| ||<:>'''3'''||<:>'''4'''||<:>||<:>||<:>'''8'''||<:>'''7'''||<:>'''9'''||<:>||<:>|| ||<:>||<:>'''6'''||<:>'''5'''||<:>||<:>'''4'''||<:>||<:>||<:>'''8'''||<:>|| {{{#!folding [ 정답 보기 ] ||<:>5||<:>8||<:>1||<:>7||<:>'''2'''||<:>9||<:>'''3'''||<:>'''4'''||<:>6|| ||<:>2||<:>3||<:>'''9'''||<:>'''4'''||<:>'''6'''||<:>1||<:>'''8'''||<:>'''7'''||<:>'''5'''|| ||<:>6||<:>7||<:>'''4'''||<:>3||<:>5||<:>'''8'''||<:>'''1'''||<:>2||<:>9|| ||<:>'''9'''||<:>2||<:>6||<:>'''8'''||<:>3||<:>'''4'''||<:>'''5'''||<:>1||