🙄 [문제]
같은 줄에 1 에서 9 까지의 숫자를 한번씩만 넣고,
3 x 3 크기의 작은 격자 또한 1 에서 9 까지의 숫자가 겹치지 않아야 한다.
입력으로 9 X 9 크기의 스도쿠 퍼즐의 숫자들이 주어졌을 때,
위와 같이 겹치는 숫자가 없을 경우 1을 정답으로 출력하고 그렇지 않을 경우 0 을 출력한다.
[input]
10
7 3 6 4 2 9 5 8 1
5 8 9 1 6 7 3 2 4
2 1 4 5 8 3 6 9 7
8 4 7 9 3 6 1 5 2
1 5 3 8 4 2 9 7 6
9 6 2 7 5 1 8 4 3
4 2 1 3 9 8 7 6 5
3 9 5 6 7 4 2 1 8
6 7 8 2 1 5 4 3 9
…
[output]
#1 1
...
[범희 풀이]
import sys, pprint
sys.stdin = open("input.txt")
T = int(input())
# 가로검정
def row_check(arr):
result = True
for i in range(9):
cnt = 0
for j in range(9):
cnt += arr[i][j]
if cnt != 45:
result = False
return result
return result
# 작은 네모 검정
def sm_check(arr):
result = True
r = [0, 0, 0, 3, 3, 3, 6, 6, 6]
c = [0, 3, 6, 0, 3, 6, 0, 3, 6]
for k in range(9):
cnt = 0
for i in range(3): # 0 1 2
for j in range(3): # 0 1 2
cnt += arr[i + r[k]][j + c[k]]
if cnt != 45:
result = False
return result
return result
for tc in range(1, T + 1):
# 9 * 9 퍼즐판
puzzle = [list(map(int, input().split())) for _ in range(9)]
# 전치 퍼즐판
t_puzzle = [[0 for _ in range(9)] for _ in range(9)]
for i in range(9):
for j in range(9):
t_puzzle[i][j] = puzzle[j][i]
ans = 0
if row_check(puzzle) == True and row_check(t_puzzle) == True and sm_check(puzzle) == True:
ans = 1
print("#{} {}".format(tc, ans))
'# 3. APS > SWEA' 카테고리의 다른 글
SWEA # Python_D2_1976_시각 덧셈 (0) | 2021.03.07 |
---|---|
SWEA # Python_D2_2001_파리퇴치 (0) | 2021.02.26 |
SWEA # Python_D2_1954_달팽이 숫자 (0) | 2021.02.25 |
SWEA # Python_D2_1961_숫자 배열 회전 (0) | 2021.02.25 |
SWEA # Python_D2_2005_파스칼의 삼각형 (0) | 2021.02.25 |