coordinate = input()
coordinate_list = ["a", "b", "c", "d", "e", "f", "g", "h"]
x, y = coordinate_list.index(coordinate[0]), int(coordinate[1]) - 1
answer = 0
# 우, 좌, 상, 하
dx = [2, 2, 1, 1, -2, -2, -1, -1]
dy = [1, -1, 2, -2, 1, -1, 2, -2]
for i in range(8):
mx = x + dx[i]
my = y + dy[i]
if mx < 0 or my < 0 or mx >= 8 or my >= 8:
continue
else:
answer += 1
print(answer)
처음에 해결했던 상하좌우 문제처럼 접근했다. 다만 상하좌우는 지속해서 값이 변경되고 이 경우는 하나의 x, y 좌표에서 완전 탐색으로 대입했다. 테스트 케이스는 대부분 성공하고 있는 것 같긴한데 뭐가 에러일진 모르겠다.
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)
내가 할 때는 8이라고 단순히 정했는데 이는 나이트가 움직일 수 있는 최대 거리를 의미했다. 생각해보니 모든 스텝들을 정의해서 반복문으로 더해주고 조건에 맞으면 1을 더해주는 로직도 정답이 될 수 있었다.