🔥 작성 코드 (🌪️56,688kb 129ms)
def sudoku(arr):
for i in range(9):
s1 = set()
s2 = set()
for j in range(9):
s1.add(arr[i][j])
s2.add(arr[j][i])
if len(s1) < 9 or len(s2) < 9:
return 0
for i in range(3):
for j in range(3):
s3 = set()
for n in range(3 * i, 3 * i + 3):
for m in range(3 * j, 3 * j + 3):
s3.add(arr[n][m])
if len(s3) < 9:
return 0
return 1
T = int(input())
for test_case in range(1, T+1):
arr = [list(map(int, input().split())) for _ in range(9)]
print(f'#{test_case}', sudoku(arr))
⭕ 해설
- 스토쿠는 행, 열 또는 3X3 박스 안에 1~9까지 숫자가 존재해야 하기 때문에 set을 사용하였습니다.
- 각 행, 열을 돌며 set에 수를 추가하고 그 길이를 조사했습니다.
- 완전한 스도쿠라면 무조건 len(set) = 9 입니다.
- 마찬가지로 3x3 박스를 조사하기 위해 범위를 정해주고 그 안의 수를 set에 저장, 길이 조사
- 하나라도 조건을 만족하지 못한다면 0을 반환하고, 모두 만족한다면 1을 반환하였습니다.
'Algorithm > SWEA' 카테고리의 다른 글
[SWEA] [S/W 문제해결 응용] 7일차 - 행렬찾기 (python) (0) | 2022.02.18 |
---|---|
[SWEA] [S/W 문제해결 기본] 5일차 - Magnetic (python) (0) | 2022.02.17 |
[SWEA 4408] 자기 방으로 돌아가기 (python) (0) | 2022.02.17 |
[SWEA 1210] [S/W 문제해결 기본] 2일차 - Ladder1 (0) | 2022.02.17 |
[SWEA 2817] 부분 수열의 합 (0) | 2022.02.15 |