자료구조와 알고리즘/개인적인 코딩테스트 관련 풀이

[탐색][시뮬레이션] - 스토쿠(2차원 List)

얄루몬 2022. 7. 7. 18:07

문제

  • 9X9 스토쿠가 정확하게 풀어졌는지를 확인하면 되는 문제이다.
  • 스토쿠가 정확하게 풀어졌는지를 확인하기 위해서는 행, 렬, 3X3 부분을 확인해 겹치는 숫자를 사용하지 않았는지를 확인해주면 된다.

문제 풀이

import sys
sys.stdin = open("input.txt", "r")

def check(sudoku):
    for i in range(9):
        ch1 = [0]*10
        ch2 = [0]*10
        for j in range(9):
            ch1[sudoku[i][j]] = 1
            ch2[sudoku[j][i]] = 1

        if sum(ch1) != 9 or sum(ch2) != 9:
            return False

    #3X3 확인을 위한 i,j로 큰 범위 설정
    for i in range(3):
        for j in range(3):
            ch3 = [0] * 10
            for k in range(3):
                for s in range(3):
                    ch3[sudoku[i*3+k][i*3+s]] = 1
            if sum(ch3) != 9:
                return False
    return True




sudoku = [list(map(int,input().split())) for _ in range(9)]
if check(sudoku):
    print("YES")
else:
    print("NO")

3X3 반복문의 반복 과정