[문제]
- 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 형식으로 만들어도 괜찮을것같긴하다.
'# 알고리즘 > 이것이 취업을 위한 코딩 테스트다 with 파이썬' 카테고리의 다른 글
[구현] 시각 (0) | 2022.08.01 |
---|---|
[구현] 상하좌우 (0) | 2022.08.01 |
[그리디] 1이 될 때까지 (0) | 2022.08.01 |
[그리디] 숫자 카드 게임 (0) | 2022.07.31 |
[그리디] 큰 수의 법칙 (0) | 2022.07.31 |