[알각코] 인프런 3-10 스도쿠 검사

스도쿠 검사

문제 정보는 인프런의 파이썬 알고리즘 문제풀이 코딩테스트에 있습니다!

문제풀이

def check(a):
  # 가로, 세로 1~9 다 있는지 체크하는 for문
  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
  # 9칸 1~9까지 체크하는 for문
  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')

이 모든걸 for문으로 해결하니 놀라울뿐….

4중 for문 처음본 것 같다

4중 for문은 2차원배열로 가로 세로 겨우 확인하는 것을 보면 왜 4중 for문이 필요한지 단박에 이해될 듯!