차곡차곡

[BOJ/Python] 백준 1331번 - 나이트 투어 본문

CS/Algorithm

[BOJ/Python] 백준 1331번 - 나이트 투어

sohy 2022. 11. 6. 10:39

백준 #1331 나이트 투어

 

1331번: 나이트 투어

나이트 투어는 체스판에서 나이트가 모든 칸을 정확히 한 번씩 방문하며, 마지막으로 방문하는 칸에서 시작점으로 돌아올 수 있는 경로이다. 다음 그림은 나이트 투어의 한 예이다. 영식이는 6×

www.acmicpc.net

import sys
input = sys.stdin.readline

visited = [[False for _ in range(6)] for _ in range(6)]

def check(before, move):
  alp = {'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5}
  befor_num = alp[before[0]]
  move_num = alp[move[0]]
  if abs(move_num - befor_num) == 2 and abs(int(move[1]) - int(before[1])) == 1 and not visited[move_num][int(move[1])-1]:
    visited[move_num][int(move[1])-1] = True
  elif abs(move_num - befor_num) == 1 and abs(int(move[1]) - int(before[1])) == 2 and not visited[move_num][int(move[1])-1]:
    visited[move_num][int(move[1])-1] = True
  else:
    return False
  return True

flag = True
for i in range(36):
  move = input().strip()
  if i == 0:
    start = move
  else:
    if not check(before, move):
      flag = False
      break
  before = move
if not check(before, start):
  flag = False

if flag:
  print("Valid")
else:
  print("Invalid")

Comments