1974. 스도쿠 검증
문제)
스도쿠는 숫자퍼즐로, 가로 9칸 세로 9칸으로 이루어져 있는 표에 1 부터 9 까지의 숫자를 채워넣는 퍼즐이다.
같은 줄에 1 에서 9 까지의 숫자를 한번씩만 넣고, 3 x 3 크기의 작은 격자 또한, 1 에서 9 까지의 숫자가 겹치지 않아야 한다.
입력으로 9 X 9 크기의 스도쿠 퍼즐의 숫자들이 주어졌을 때, 위와 같이 겹치는 숫자가 없을 경우, 1을 정답으로 출력하고 그렇지 않을 경우 0 을 출력한다.
[제약 사항]
1. 퍼즐은 모두 숫자로 채워진 상태로 주어진다.
2. 입력으로 주어지는 퍼즐의 모든 숫자는 1 이상 9 이하의 정수이다.
[입력]
입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.
다음 줄부터 각 테스트 케이스가 주어진다.
테스트 케이스는 9 x 9 크기의 퍼즐의 데이터이다.
[출력]
테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
T = int(input())
for _ in range(T):
li = [list(map(int, input().split())) for i in range(9)]
answer = 362880
total = 0
for i in range(9):
mul_r = 1 # 가로
mul_c = 1 # 세로
mul_sq = 1 # 3x3
for j in range(9):
mul_r *= li[i][j]
mul_c *= li[j][i]
mul_sq = 1
if i % 3 == 0 and j % 3 == 0:
for o in range(3):
for k in range(3):
mul_sq *= li[i + o][j + k]
else:
if mul_sq == answer:
total += 1
if mul_r == answer:
total += 1
if mul_c == answer:
total += 1
if total == 27:
print(f"#{_ + 1} 1")
else:
print(f"#{_ + 1} 0")
|
cs |
문제 출처 : https://swexpertacademy.com/main/main.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
※ SW Expert 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.
학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.
'Develop > Python + SWEA' 카테고리의 다른 글
[SW Expert Academy] 1970. 쉬운 거스름돈 (0) | 2022.02.19 |
---|---|
[SW Expert Academy] 5431. 민석이의 과제 체크하기 (0) | 2022.02.19 |
[SW Expert Academy] 1979. 어디에 단어가 들어갈 수 있을까 (0) | 2022.02.16 |
[SW Expert Academy] 2001. 파리퇴치 (0) | 2022.02.16 |
[SW Expert Academy] 1210. Ladder1 (0) | 2022.02.16 |