Adventure Time - Finn 3
본문 바로가기
코테연습/python

스토쿠 검사

by hyun9_9 2026. 4. 15.

스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9 개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다.

각 행에 1부터 9까지의 숫자가 중복 없이 나오 고, 각 열에 1부터 9까지의 숫자가 중복 없이 나오고, 각 3×3짜리 사각형(9개이며, 위에서 색 깔로 표시되었다)에 1부터 9까지의 숫자가 중복 없이 나오기 때문이다. 완성된 9×9 크기의 수도쿠가 주어지면 정확하게 풀었으면 “YES", 잘 못 풀었으면 ”NO"를 출 력하는 프로그램을 작성하세요.

import sys
# sys.stdin=open("input.txt","rt")
# n,m = map(int,input().split())
# n = int(input())
# arr = list(map(int,input().split()))
# n = input()

arr = [list(map(int,input().split())) for _ in range(9)]
ok = "NO"

for i in range(len(arr)):
    xset = set()
    yset = set()
    
    for j in range(len(arr)):
        xset.add(arr[i][j])
        yset.add(arr[j][i])
        
    if len(xset) < 9 or  len(yset) < 9:
        break
else:
    filterIndex = [[i,j] for i in range(3) for j in range(3)]
    for i in range(len(arr)//3):
        ck =False
        for j in range(len(arr)//3):
            fset = set()
            for k in filterIndex:
                fset.add(arr[k[0]][k[1]])
            if len(fset) < 9:
                break
            filterIndex = [[a+ i*3,b + j*3] for a in range(3) for b in range(3)]
            # print(filterIndex)
        else:
            ck = True
            filterIndex = [[a + i*3 ,b] for a in range(3) for b in range(3)]
        if not ck:
            break
    else:
        ok = "YES"
    
print(ok)

'코테연습 > python' 카테고리의 다른 글

이분검색  (0) 2026.04.16
격자판 회문수  (0) 2026.04.15
봉우리  (0) 2026.04.14
곳감(모래시계)  (2) 2026.04.14
격자판 최대합  (0) 2026.04.13