20210115 // 삼성 SW Expert 아카데미 // 1974
2021. 1. 15. 16:01ㆍProgramming/SW Expert Academy
삼성 SW Expert 아카데미 1974번 "스도쿠 검증" 문제입니다.
TC = int(input())
def sudoku(lst):
temp = [1,2,3,4,5,6,7,8,9]
k = []
for i in range(0, 9):
k.extend(lst[i])
k.sort()
if k != temp:
return False
k.clear()
for i in range(0, 9):
k = [lst[0][i], lst[1][i], lst[2][i], lst[3][i], lst[4][i], lst[5][i], lst[6][i], lst[7][i], lst[8][i]]
k.sort()
if k != temp:
return False
k.clear()
for i in range(0, 9, 3):
for j in range(0, 9, 3):
k.extend(lst[i][j:j+3])
k.extend(lst[i+1][j:j+3])
k.extend(lst[i+2][j:j+3])
k.sort()
if k != temp:
return False
k.clear()
return True
for tc in range(1, TC+1):
arr = [list(map(int, input().split())) for _ in range(9)]
if sudoku(arr):
print("#%s"%tc, 1)
else:
print("#%s"%tc, 0)
스도쿠 검증문제이다. 스도쿠란 숫자 퍼즐로, 가로 9칸, 세로 9칸으로 이루어져 있는 표에 1부터 9까지의 숫자를 채워 넣는 퍼즐이다.
이를 검증하기 위해서는 가로, 세로, 그 다음 정사각형을 탐색하여 그 값들이 배열 [1,2,3,4,5,6,7,8,9]와 같으면 된다.
1~9까지 한 번씩만 쓰이므로 가로, 세로, 정사각형에 들어있는 숫자 9개를 정렬하여 [1,2,3,4,5,6,7,8,9]와 비교하면 된다.
가로, 세로, 정사각형을 하나하나씩 비교하면서 하나의 경우라도 다를 경우 False반환, 무사히 다 통과할 경우 True를 반환한다.
'Programming > SW Expert Academy' 카테고리의 다른 글
20210115 // 삼성 SW Expert 아카데미 // 1946 (0) | 2021.01.15 |
---|---|
20210115 // 삼성 SW Expert 아카데미 // 1970 (0) | 2021.01.15 |
20210115 // 삼성 SW Expert 아카데미 // 1976 (0) | 2021.01.15 |
20210115 // 삼성 SW Expert 아카데미 // 1979 (0) | 2021.01.15 |
20210114 // 삼성 SW Expert 아카데미 // 1983 (0) | 2021.01.14 |