스도쿠 Swordfish 기법 - 3행 3열을 이용한 고급 소거법
Swordfish는 X-Wing을 3행·3열로 확장한 기법입니다. 세 행에서 특정 숫자의 후보가 모두 지정된 3개의 열 안에만 존재할 때, 그 3개의 열에서 해당 숫자를 대규모로 소거할 수 있습니다.
1. X-Wing 복습 & Swordfish 연결
Swordfish를 이해하려면 X-Wing의 논리를 완전히 체화해야 합니다. 먼저 X-Wing과 Swordfish의 관계를 정리합니다.
| 기법 | 기준 행 수 | 대상 열 수 | 각 행의 후보 수 |
|---|---|---|---|
| X-Wing | 2행 | 정확히 2열 | 각 행에서 정확히 2개 |
| Swordfish | 3행 | 정확히 3열 | 각 행에서 2개 또는 3개 |
| Jellyfish | 4행 | 정확히 4열 | 각 행에서 2~4개 |
가장 중요한 차이점: X-Wing은 각 기준 행에서 후보가 정확히 2개여야 하지만, Swordfish는 2개 또는 3개를 허용합니다. 단, 모든 후보는 지정된 3개의 열 안에만 있어야 합니다.
3개의 행에서 숫자 N의 후보가 모두 특정 3개의 열 안에만 존재한다면, 그 3개의 행·열이 이루는 9개의 교점 중 어디에 N이 들어가든 각 열에서 N의 위치는 그 3개의 행 중 하나입니다. 따라서 그 3개의 열에서 3개의 기준 행을 제외한 나머지 셀의 N을 모두 소거할 수 있습니다.
2. Swordfish 성립 조건
Swordfish가 성립하기 위한 정확한 조건을 정리합니다.
3개의 기준 행 선택: 특정 숫자의 후보가 있는 3개의 행을 선택합니다.
후보 열 합집합: 3개 행 각각에서 해당 숫자의 후보 열 번호를 모두 모읍니다.
3열 조건 확인: 합집합이 정확히 3개의 열 번호로만 구성되어야 합니다 (3개 이하가 아닌 정확히 3개).
소거 실행: 해당 3개의 열에서 3개의 기준 행을 제외한 모든 셀의 후보에서 해당 숫자를 소거합니다.
행 A: 1열, 4열 / 행 B: 1열, 4열, 7열 / 행 C: 4열, 7열, 9열
합집합 = {1열, 4열, 7열, 9열} → 4개의 열 → Swordfish 불성립 (Jellyfish는 가능할 수 있음)
3. 시각적 예시 분석
숫자 3에 대한 Swordfish 예시를 살펴봅니다. 노란색 셀이 Swordfish의 꼭짓점(anchor), 빨간색이 소거 대상입니다.
노란색(3?) = Swordfish 앵커 | 빨간색(3✗) = 소거 대상
위 예시 분석:
- 기준 행: 행 1 (4열, 9열), 행 4 (4열, 7열, 9열), 행 7 (4열, 9열)
- 후보 열 합집합: {4열, 7열, 9열} → 정확히 3개 ✅
- Swordfish 성립!
- 소거 범위: 4열·7열·9열에서 행 1·4·7을 제외한 모든 셀 (행 2,3,5,6,8,9)
4. Swordfish 탐색 5단계
실전에서 Swordfish를 찾는 체계적인 방법입니다.
숫자 선택: 아직 많이 남아있는 숫자를 선택합니다 (후보가 많을수록 Swordfish가 숨어있을 가능성이 높음).
행별 후보 열 목록 작성: 각 행에서 해당 숫자의 후보 열 번호를 적습니다. 후보가 4개 이상인 행은 제외합니다.
3행 조합 시도: 후보가 2~3개인 행들 중 3개를 골라 합집합을 계산합니다. C(n,3) 조합을 시험합니다.
3열 여부 확인: 합집합이 정확히 3개의 열이면 Swordfish 발견!
소거 전 검증: 소거 대상 셀들이 3개의 기준 행에 속하지 않는지 재확인 후 소거 실행.
후보가 이미 2개뿐인 행은 Swordfish에서 "강한 앵커" 역할을 합니다. 이런 행들을 먼저 짝지어보고, 나머지 한 행을 찾는 방식이 효율적입니다.
5. 실전 케이스 스터디
다른 기법이 전부 막힌 상황에서 Swordfish를 적용하는 실제 사례를 살펴봅니다.
상황: 숫자 9에 대한 각 행의 후보 목록
| 행 | 숫자 9의 후보 열 | Swordfish 가능? |
|---|---|---|
| 행 1 | 2열, 6열 | ⭐ 후보 2개 |
| 행 2 | 2열, 3열, 6열 | ⭐ 후보 3개 |
| 행 3 | 1열, 5열, 8열 | 합집합 계산 필요 |
| 행 4 | 2열, 6열, 9열 | 합집합 계산 필요 |
| 행 5 | 2열, 6열 | ⭐ 후보 2개 |
| 행 6 | 3열, 7열 | 합집합 계산 필요 |
| 행 7~9 | 각종 조합 | 스킵 |
행 1, 2, 5로 시도:
행 1: {2열, 6열}
행 2: {2열, 3열, 6열}
행 5: {2열, 6열}
합집합 = {2열, 3열, 6열} → 정확히 3개 ✅ Swordfish 발견!
소거: 2열·3열·6열에서 행1·2·5를 제외한 모든 행(3,4,6,7,8,9)의 9 소거
효과: 예를 들어 행 4에서 2열·6열의 9가 소거되면 행4의 9 후보가 9열 하나만 남아 즉시 확정!
6. 열 기반 Swordfish
행 기반과 완전히 대칭적입니다. 3개의 열에서 특정 숫자의 후보가 모두 지정된 3개의 행 안에만 있을 때 성립합니다.
| 구분 | 행 기반 | 열 기반 |
|---|---|---|
| 기준 | 3개의 행 | 3개의 열 |
| 제한 | 후보가 지정된 3개의 열 안에만 | 후보가 지정된 3개의 행 안에만 |
| 소거 | 3개 열에서 기준 3행 제외 소거 | 3개 행에서 기준 3열 제외 소거 |
실전에서는 두 방향 모두 탐색해야 합니다. X-Wing처럼 보드를 90도 돌려서 보면 열 기반 탐색이 더 직관적으로 느껴집니다.
7. Jellyfish와 그 너머
Swordfish를 마스터했다면 이론적으로 Jellyfish(4행·4열)도 이해할 수 있습니다. 하지만 실용성 면에서는 Swordfish까지만 알아도 거의 모든 퍼즐을 풀 수 있습니다.
| 기법 | 크기 | 실전 빈도 |
|---|---|---|
| X-Wing | 2×2 | 높음 |
| Swordfish | 3×3 | 중간 |
| Jellyfish | 4×4 | 낮음 |
| Squirmbag (5×5) | 5×5 | 매우 낮음 |
스도쿠 커뮤니티에서는 X-Wing과 Swordfish를 안정적으로 적용할 수 있으면 "고급 플레이어"로 인정합니다. 그 이상의 기법은 컴퓨터 솔버의 영역에 가까워집니다. Swordfish까지 완전히 소화한 것 자체가 대단한 성취입니다!
💡 Swordfish 이해도 확인 퀴즈
다음 상황에서 Swordfish가 성립하는지, 성립한다면 소거 범위는 어디인지 답하세요.
숫자 6에 대해:
행 2: 1열, 5열 (2개)
행 5: 1열, 5열, 8열 (3개)
행 8: 5열, 8열 (2개)
합집합 = ?