Written on
·
187
2
2 4 3 6 2 8 5 7 8
4 7 2 1 3 9 4 6 9
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
선생님 강의 열심히 듣고 있습니다. 굉장히 유익합니다만
이렇게 입력 했을 때, YES 라고 나옵니다. 첫번째 행에 2가 중복임에도 불구하고 말입니다. 모든 열과 행의 합이 45라는 것은 모든 중복을 체크하지는 못하는 것 같습니다. 물론 문제의 취지는 탐색하는 방법을 공부하는 것이지만요. 그래도 합으로 푸는 건 아닌거 같아 질문 드립니다! 감사합니다!
Answer 1
0
반례를 잡지 못했네요ㅜㅜ 감사합니다~~
ch 리스트를 써서 짜보았습니다.
import sys
sys.stdin=open("input.txt", "r")
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
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")