# 알고리즘/이것이 취업을 위한 코딩 테스트다 with 파이썬

[구현] 왕실의 나이트

커피중독자 2022. 8. 1. 02:18

[문제]

- 8X8 나이트 판이 존재한다.

- 행은 12345678, 열은 abcdefgh 로 표현한다.

- 나이트는 수평2-수직1 or 수직2-수평1 로만 이동이 가능하다.

- 나이트의 좌표가 주어졌을때 (ex a,1) 나이트가 이동할 수 잇는 경우의수를 구하는 프로그램을 구현한다.

- 나이트는 정원의 밖으로 나갈 수 없다.

 

[코드]

# 나이트가 움직일 수 있는 경우의수 8가지를 구해본다.
steps = [ (-2,-1), (-1,-2), (1,-2), (2,-1),(2,1), (1,2), (-1,2), (-2,1) ]
row,col=1,1
result = 0

for i in steps:
  next_row = row+i[0]
  next_col = col+i[1]

  # 맵 안에 들어있는경우 result 를 1 증가시킨다.
  if(next_row >= 1 and next_row <= 8 and
    next_col >= 1 and next_col <= 8):
      result += 1

print(result)

 

[해설]

- abcdefgh 를 숫자로바꾸는 ord 함수를 사용했던데, 이는 나중에 해설을 추가해볼 예정

- 나이트가 움직일 수 있는 경우의수를 모두 계산한다.

- 경우의수가 맵안에 존재하는지 체크하고, 맵안에 존재한다면 result 를 +1 시켜준다.

- 사실, 앞서 구현하였던 dx dy 이동문제도 이처럼 steps 형식으로 만들어도 괜찮을것같긴하다.