[SWEA] 1974. 스도쿠 검증 [D2]
📚 문제
세트 자료형을 활용한다.
1~9까지 있는지 확인하기 위해 세트에 담아 길이가 9를 출력하는지 확인한다.
중복되어 없는 값이 있으면 세트의 길이가 9가 되지 않는다.
우선 퍼즐을 2차원 배열로 받아온다.
-
맨 위 row의 원소를 세트에 담아 확인하고 아래로 내려가며 확인한다.
-
맨 왼쪽 column의 원소를 세트에 담아 확인하고 오른쪽으로 움직이며 column을 확인한다.
-
3x3 박스가 9인지 확인하기 위해 맨 왼쪽 위의 인덱스에서 오른쪽으로 두번, 아래로 두번 움직이며 9칸 탐색한다.
1, 2는 같은 for문에 담아 사용할 수 있다.
📒 코드
T = int(input())
for tc in range(1, 1+T):
arr = [list(map(int, input().split())) for _ in range(9)] # 입력받은 스도쿠 퍼즐
result = 1 # 중간에 문제
for i in range(9): # row, column 탐색
row_set = set() # row의 숫자를 담을 set
col_set = set() # column의 숫자를 담을 set
for j in range(9): # 숫자를 담는다.
row_set = row_set | {arr[i][j]}
col_set = col_set | {arr[j][i]}
if len(row_set) != 9 or len(col_set) != 9: # 1~9중 하나라도 중복되면 길이가 9가 나오지 않음을 이용
result = 0
break
if result: # 위에서 만족시키지 못한 경우가 나오면 네모 탐색을 하지 않는다.
for i in range(3): #3X3 네모 탐색
for j in range(3):
num_set = set()
for k in range(3*i, 3*i+3): # 네모의 맨 왼쪽 위 인덱스부터 3x3 네모모양을 탐색
for l in range(3*j, 3*j+3):
num_set = num_set | {arr[k][l]}
if len(num_set) != 9:
result = 0
break
print(f'#{tc} {result}')
🔍결과 : Pass
Author And Source
이 문제에 관하여([SWEA] 1974. 스도쿠 검증 [D2]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yunhlim/SWEA-1974.-스도쿠-검증-D2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)