본문 바로가기

프로그래밍

[Algorithm] 구현 - 왕실의 나이트

이것이 코딩 테스트다 - 구현 - 실전문제: 왕실의 나이트

🔍 답안

input_data = input()
# column = ord(input_data[0]) - 96 #내 답
column = int(ord(input_data[0]) - int(ord('a'))) + 1 #책 답안 예시
row = int(input_data[1])

#가능한 이동경로
steps = [(-2,-1), (-2,1), (2,-1), (2,1), (-1,-2), (-1,2), (1,-2), (1,2)]

result = 0 

for step in steps:
    next_column = column + step[0]
    next_row = row + step[1]

    if next_column>=1 and next_row<=8 and next_row>=1 and next_row<=8 :
        result += 1

print(result)

💫 느낀점 및 배운점

  • 나이트가 이동할 수 있는 경우의 수에 대해서는 생각해냈는데 이걸 리스트에 담아 활용하는 것까지는 생각하지 못했다. 이전 상하좌우 문제처럼 이동할 수 있는 경우를 리스트에 담는 것이 훨씬 효율적이다는 것을 다시 알게됨. 까먹지 말자!
#내 답안
column = ord(input_data[0]) - 96
#책 답안
column = int(ord(input_data[0]) - int(ord('a'))) + 1 
  • 알파벳으로 입력받은 열을 숫자로(1~8)변환시켜야겠다는 아이디어는 맞았지만 방법에 있어서 책의 답안도 있다.
    나는 알파벳'a'의 유니코드 값이 96이라는 것을 알아내서 - 96을 해주었지만 유니코드값을 모르는 경우는 책의 답안처럼 - ord('a')하면 된다는 것을 배움.


  • ord() : 어떤 문자의 유니코드 값을 알고싶을 때

  • chr() : 어떤 유니코드 값에 해당하는 문자를 알고싶을 때