[SWEA] - 1974. 스도쿠 검증
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으로 주었다.
아직은 좀 어렵지만,,, 빠른 시일내에 잘 이해해보자,,, 😥
Author And Source
이 문제에 관하여([SWEA] - 1974. 스도쿠 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jjiani/SWEA-1974.-스도쿠-검증저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)