def checkUnique3x3(array):
visited = [False for _ in range(10)]
for rr in range(3):
for cc in range(3):
cur = array[rr][cc]
if visited[cur]:
return False
visited[cur] = True
return True
def checkUnique9x9(line):
visited = [False for _ in range(10)]
for el in line:
if visited[el]:
return False
visited[el] = True
return True
def check3x3():
idx = [0, 3, 6]
for ii in idx:
for jj in idx:
tempArray = [[] for _ in range(3)]
tempArray[0] = graph[ii][jj:jj+3]
tempArray[1] = graph[ii+1][jj:jj+3]
tempArray[2] = graph[ii+2][jj:jj+3]
if not checkUnique3x3(tempArray):
return False
return True
def check9x9():
# 가로
for k in range(9):
if not checkUnique9x9(graph[k]):
return False
# 세로
for k in range(9):
tempLine = []
for ck in range(9):
tempLine.append(graph[ck][k])
if not checkUnique9x9(tempLine):
return False
return True
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
graph = [[] for _ in range(9)]
for i in range(9):
temp = map(int, input().split())
for item in temp:
graph[i].append(item)
if check3x3() and check9x9():
print("#" + str(test_case) + " " + str(1))
else:
print("#" + str(test_case) + " " + str(0))
역시 꼼꼼한 구현 문제.
3x3, 9x9 체크 로직만 잘 설계하면 끝나는 문제였다.
이중 for문에서 초기화 로직 짤 때 더 주의하면 좋겠다.