728x90
반응형

문제

8 x 8 좌표 평면의 체스판이 있고 나이트는 L자 형태로만 이동할 수 있고 체스판 밖을 벗어나지 못한다. 이 때 경우는 2가지로

1. 수평으로 두 칸 이동한 뒤에 수직으로 이동하기

2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기

체스판의 행은 1 ~ 8, 열은 a ~ h로 표기했을 때 입력받은 위치에서 이동가능한 경우의 수를 출력하세요.

 

예시

입력

a1

 

출력

2

 

정답

# 현재 나이트의 위치 입력받기
data =input()
row=int(data[1])
column=int(ord(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:
        result +=1

print(result)

 

내가 시도를 해봤는데 잘 구현이 되지 않아 바로 정답코드 올린다...

728x90
반응형

+ Recent posts