[python] 왕실의 나이트

yeco_ob·2023년 2월 1일
0

문제

8*8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하세요. 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열 위치를 표현할 때는 a부터 h로 표현합니다.

나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있습니다.
1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기

첫째 줄에 나이트의 위치를 입력 받고 이동할 수 있는 경우의 수를 출력하세요.

해결 방법

위 문제는 8가지 경로를 하나씩 확인하며 이동이 가능한지 확인만 하면 됩니다. 이때 리스트를 이용하여 8가지 방향 벡터를 정의합니다.

제출

#현재 나이트의 위치 입력 받기
input_data = input()
row = int(input_data[1]) #나이트의 행
column = int(ord(input_data[0])) - int(ord('a')) + 1 #나이트의 열

#나이트가 이동할 수 있는 8가지 방향 정의
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

#8가지 방향에 대해 이동이 가능한지 확인
result = 0

for step in steps:
    #이동하고자 하는 위치
    next_row = row + step[0]
    next_column = column + step[1]
    #이동 가능하다면
    if next_row >= 1 and next_row <= 8 and next_column >= 1 and next_column <=8:
    resulr += 1
    
print(result)

✨ord()

하나의 문자를 인자로 받고 해당 문자에 해당하는 유니 코드 정수를 반환하는 함수이다.

예를 들어, ord('a') 는 정수 97 을 반환하고 ord('€') (유로 기호)는 8364 를 반환합니다. 이것은 chr() 의 반대입니다.

파이썬 공식 문서 참고

0개의 댓글