[문제]
이것이 취업을 위한 코딩 테스트다 with 파이썬 P 115에 실전 2 왕실의 나이트
[입력 조건]
- 첫째 줄에 8×8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 입력 문자는 a1처럼 열과 행으로 이뤄진다.
[출력 조건]
- 첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하시오.
<입력 예시>
a1
<출력 예시>
2
[책 풀이]
🔎 아이디어
- 규칙에 따른 나이트의 이동 경로를 리스트에 저장한다.
move_type = [(-1,-2), (-1,2), (1,-2), (1,2), (-2,-1), (-2,1), (2,-1), (2,1)]
규칙에 따른 이동 경로는 총 8가지이고,
튜플의 첫번째 원소는 행, 두번째 원소는 열의 이동 경로를 뜻한다.
- 나이트가 move_type 에 따라 이동했을 때, 8×8 좌표 평면을 벗어나는지 확인한다. 벗어나지 않으면 이동 횟수로 count하고, 벗어나면 count 하지 않는다.
🔎 코드
point = input()
row = int(point[1])
col = int(ord(point[0]))-int(ord('a'))+1 # int(ord('a')) = 97
move_type = [(-1,-2), (-1,2), (1,-2), (1,2), (-2,-1), (-2,1), (2,-1), (2,1)]
result = 0
for step in move_type:
nx_row = row + step[0]
nx_col = col + step[1]
if nx_row < 1 or nx_row > 8 or nx_col < 1 or nx_col > 8:
continue
else:
result+=1
# or if nx_row >=1 or nx_row <= 8 or nx_col <=1 or nx_col >= 8 : result+=1
print(result)
'알고리즘 문제풀이 > 파이썬' 카테고리의 다른 글
[이코테-구현] 실전 - 07. 럭키 스트레이트 (0) | 2022.06.21 |
---|---|
[이코테-구현] 실전 - 게임 개발 (0) | 2022.06.17 |
[이코테-구현] 예제 - 시각 (0) | 2022.06.17 |
[이코테-구현] 예제 - 상하좌우 (0) | 2022.06.17 |
[이코테-그리디] 기출 - 06.무지의 먹방 라이브 (0) | 2022.05.09 |