def isclear(arr):
# 가로검사
for r in range(9):
row = arr[r][:]
if len(row) != len(set(row)):
return 0
# 세로검사
for c in range(9):
column = []
for r in range(9):
column.append(arr[r][c])
# 한 열이 다 담기고 나면 중복검사
if len(column) != len(set(column)):
return 0
# 3*3배열 검사
for r in range(0, 9, 3):
for c in range(0, 9, 3):
sub_arr = [row[c:c + 3] for row in arr[r:r + 3]]
sub = []
for i in range(3):
for j in range(3):
sub.append(sub_arr[i][j])
if len(sub) != len(set(sub)):
return 0
return 1
for tc in range(1, int(input())+1):
sudoku = [list(map(int, input().split())) for _ in range(9)]
print('#{} {}'.format(tc, isclear(sudoku)))
🔑 문제 읽고나서 언제 다 구현하나했는데 3*3배열 검사 말고는 괜찮았다!
세로 검사인 경우 한번에 비교 할 수 없으므로 리스트에 담은 뒤 검사해야한다. (아닐수도 있음,,, 내가 모르는 것 일수도,,,😓)
💡3*3배열은 나도 이번 기회에 배웠다!
for r in range(0, 9, 3):
for c in range(0, 9, 3):
sub_arr = [row[c:c + 3] for row in arr[r:r + 3]]
나는 3개 단위로 끊고 싶어서 step을 3으로 주었다.
아직은 좀 어렵지만,,, 빠른 시일내에 잘 이해해보자,,, 😥