본문 바로가기

파이썬 알고리즘 풀이

20) 스도쿠 검사

문제

완성된 9×9 크기의 수도쿠가 주어지면 정확하게 풀었으면 “YES", 잘 못 풀었으면 ”NO"를 출 력하는 프로그램을 작성하기

 

조건

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

 

예를 들어 다음을 보자.

위 그림은 스도쿠를 정확하게 푼 경우이다.

 

각 행에 1부터 9까지의 숫자가 중복 없이 나오 고, 각 열에 1부터 9까지의 숫자가 중복 없이 나오고

 

각 3×3짜리 사각형(9개이며, 위에서 색 깔로 표시되었다)에 1부터 9까지의 숫자가 중복 없이 나오기 때문이다.

 

제한사항

첫 번째 줄에 완성된 9×9 스도쿠가 주어집니다.

 

첫째 줄에 “YES" 또는 ”NO"를 출력하세요.

 

문제풀이

a=[list(map(int, input().split())) for _ in range(9)]

ch1=set()
ch2=set()
ch3=set()

def check(a):
  for i in range(9):
    for j in range(9):
      ch1.add(a[i][j])
      ch2.add(a[j][i])
    
    if len(ch1) != 9 or len(ch2) != 9:
      return False
  
  for i in range(3):
    for j in range(3):
      for k in range(3):
        for l in range(3):
          ch3.add(a[i*3+k][j*3+l])
        
      if len(ch3) != 9:
        return False
        
  return True 

if check(a):
  print("YES")
else:
  print("NO")

'파이썬 알고리즘 풀이' 카테고리의 다른 글

22) 이분검색  (0) 2021.10.22
21) 격자판 회문수  (0) 2021.10.22
19) 봉우리  (0) 2021.10.22
18) 곳감(모래시계)  (0) 2021.10.22
17) 사과나무(다이아몬드)  (0) 2021.10.22