✔문제
왕실 정원은 8x8 좌표 평면이다. 나이트는 L자 형태로만 이동할 수 있다.(1.수평으로 두 칸 이동 후 수직으로 한 칸 2. 수직으로 두 칸 이동 후 수평으로 한 칸) 좌표 평면상에서 나이트의 위치가 주어졌을 때 이동할 수 있는 경우의 수를 출력해라. 이때 행은 1~8, 열을 a~h로 표현한다.
ex. a1 -> 2
[답안 예시]
n = input()
row = int(n[1]) #열
column = int(ord(n[0])) - int(ord('a')) + 1 #ord unicode, 행
#경우의 수
steps = [(2,1),(2,-1),(-2,1),(-2,-1),(1,2),(1,-2),(-1,2),(-1,-2)]
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)
📌
ord()는 하나의 문자에 대한 아스키 코드거 정수 값을 반환
열변수는 가로축 인덱스를 의미하는데 가로축은 a부터 h까지 존재하므로, 인덱스값을 계산하기 위해 'a'의 아스키코드 값만큼 빼주는 것(인덱스 값을 0으로 맞춰준다고 이해!) 그러나 이 문제에서는 인덱스가 1부터 출발하므로 추가적으로 1을 더해준것
@이것이 코딩 테스트다 with 파이썬