이것이 코딩 테스트다 - 구현 - 실전문제: 왕실의 나이트
🔍 답안
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()
: 어떤 유니코드 값에 해당하는 문자를 알고싶을 때
'프로그래밍' 카테고리의 다른 글
[Spring] @Configuration과 싱글톤 (0) | 2024.04.05 |
---|---|
[Baekjoon] 15552. 빠른 A+B - 파이썬 / readline() (0) | 2024.03.25 |
[Baekjoon] 11718. 그대로 출력하기 - 파이썬 / EOFError (0) | 2024.03.25 |
[운영체제] 프로세스의 상태 (Process State) (0) | 2021.03.25 |