왕실의 나이트 [구현]

# 1. 체스판 8X8
# 2. 나이트는 L자 형태 이동만 (수평 2칸 수직 1칸 or 수평 1칸 수직 2칸)
# 3. 나이트의 위치가 주어졌을 때 이동할 수 있는 모든 경우의 수
# 4. 행 위치는 1~8 / 열 위치는 a~h

knight=input()
location_char=['a','b','c','d','e','f','g','h']
answer=0

for i in location_char:
    if knight[0]==i:
        location=[int(location_char.index(i)+1),int(knight[1])]


steps=[[2,1],[-2,1],[2,-1],[-2,-1],[1,2],[-1,2],[1,-2],[-1,-2]]

for step in steps:
    if location[0]+step[0]>1 and location[1]+step[1]<9:
            answer+=1

print(answer)
  • steps 변수가 dx, dy 기능을 대신 수행.

책 풀이

input_data=input()
row=int(input_data[1])
column=int(ord(input_data[0])-int(ord('a')))+1

steps=[(-2,-1),(-1,-2),(1,-2),(2,-1),(2,1),(1,2),(-1,2),(-2,1)]

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)
  • 리스트 인덱스 사용 말고도, column=int(ord(input_data[0])-int(ord('a')))+1 로 한 줄에 표현이 가능함.

좋은 웹페이지 즐겨찾기