728x90
> 탐색 & 시뮬레이션 (2차원 리스트 탐색 편)
📖 문제 : 스도쿠검사
스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9 개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다음을 보자.
위 그림은 스도쿠를 정확하게 푼 경우이다. 각 행에 1부터 9까지의 숫자가 중복 없이 나오 고, 각 열에 1부터 9까지의 숫자가 중복 없이 나오고, 각 3×3짜리 사각형(9개이며, 위에서 색 깔로 표시되었다)에 1부터 9까지의 숫자가 중복 없이 나오기 때문이다.
완성된 9×9 크기의 수도쿠가 주어지면 정확하게 풀었으면 “YES", 잘 못 풀었으면 ”NO"를 출 력하는 프로그램을 작성하세요.
입력설명
첫 번째 줄에 완성된 9×9 스도쿠가 주어집니다.
출력설명
첫째 줄에 “YES" 또는 ”NO"를 출력하세요.
입력예제 1
1 4 3 6 2 8 5 7 9
5 7 2 1 3 9 4 6 8
9 8 6 7 5 4 2 3 1
3 9 1 5 4 2 7 8 6
4 6 8 9 1 7 3 5 2
7 2 5 8 6 3 9 1 4
2 3 7 4 8 1 6 9 5
6 1 9 2 7 5 8 4 3
8 5 4 3 9 6 1 2 7
출력예제 1
YES
코드
import sys
def check(a):
# 행, 열 검사
for i in range(9):
ch1 = [0]*10
ch2 = [0]*10
for j in range(9):
ch1[a[i][j]] = 1
ch2[a[j][i]] = 1
if sum(ch1)!= 9 or sum(ch2)!= 9:
return False
# 3*3으로 이루어진 블록 9개 검사
for i in range(3):
for j in range(3):
ch3 = [0]*10
for k in range(3):
for s in range(3):
ch3[a[i*3+k][j*3+s]] = 1
if sum(ch3) != 9 :
return False
return True
a = [list(map(int, input().split())) for _ in range(9)]
if check(a):
print("YES")
else:
print("NO")
⭐️ Point ! ⭐️
- 파이썬 함수 사용하기
- 1차원 리스트의 모든 원소의 합 구하기
sum(ch1)
출처
- 인프런 : 파이썬 알고리즘 문제 풀이
728x90
'Algorithm (Python, Java, SQL) > Inflearn Study' 카테고리의 다른 글
[Python Algorithm] 이분탐색(결정알고리즘) - 이분 검색 (1) | 2023.03.16 |
---|---|
[Python Algorithm] 탐색&시뮬레이션(2차원 리스트 탐색) - 격자판 회문수 (1) | 2023.03.15 |
[Python Algorithm] 탐색&시뮬레이션(2차원 리스트 탐색) - 봉우리 (1) | 2023.03.14 |
[Python Algorithm] 탐색&시뮬레이션(2차원 리스트 탐색) - 곶감(모래시계) (3) | 2023.03.14 |
[Python Algorithm] 탐색&시뮬레이션(2차원 리스트 탐색) - 사과나무(다이아몬드) (1) | 2023.03.14 |