구현 - 예제) 왕실의 나이트

Yona·2021년 9월 13일
0

🌻 algorithm

목록 보기
6/18

문제 이해

결론) 나이트의 위치가 주어졌을때, 나이트가 이동할 수 있는 경우의 수는?

  • 8*8 체스판임
  • 이동은 두가지 중 하나
    1) 수평 2칸 -> 수직 1칸
    2) 수직 2칸 -> 수평 1칸

처음 든 생각

  • 범위에서 벗어나는지 체크하는게 중요하겠군

처음 짠 코드

pos = input()
row = int(pos[1])
col = int(ord(pos[0])) - int(ord('a')) + 1

dx = [2, -2, 2, -2, 1, 1, -1, -1] # 수평이동
dy = [1, 1, -1, -1, 2, -2, 2, -2] # 수직이동


final_x, final_y = row, col
res = 0


for i in range (8) : #이동할 수 있는 모든 경우 검사
  tmp_x = final_x + dx[i]
  tmp_y = final_y + dy[i]

  # 체스판에서 벗어날 경우 count하지 않음
  if tmp_x < 1 or tmp_y < 1 or tmp_x > 8 or tmp_y > 8 :
    continue
  # 체스판에 있는경우 count
  res += 1
  
print(res)

오~ 맞았다~~

profile
Sometimes you win, sometimes you learn 🏃‍♀️

0개의 댓글