* 음.. LRUD문제랑 관련이 있는 것 같긴 한데..
* 8 * 8 matrix이니까 나올 수 있는 경우의 수가 한정적이긴 한 것 같다.
* (1, 1) -> (3, 2), (2, 3) 2개: +2, +1 or +1, +2
* (1, 2) -> (2, 4), (3, 3), (3, 1): 여기서는 +2, -1이 추가 됨
* 그러니까 정리해보면
* (+1, +2), (+2, +1)
* (+2, -1), (-1, +2)
* (-2, +1), (+1, -2)
* (-1, -2), (-2, -1)
* 이렇게 8가지가 나올 수 있는데 이게 범위안에 있어야 한다는 것..
1. x, y 선언 하는 방법.
2. 위의 내용대로 어떻게 빼는지?
3. 범위 안에 있는지 확인하기 if, continue?
4. 문자로 입력받는 거 숫자로 처리해서 다시 문자로 넘겨줄 건지, 아니면 그냥 문자로 처리할 건지?
#%%
init = list(input())
x = ord(init[0]) - 96
y = int(init[1])
count = 0
# print(x, y)
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
for i in range(4):
nx = x + 2*dx[i]
ny = y + dy[i]
print(nx, ny)
if nx < 1 or nx > 8 or ny < 1 or ny > 8:
continue
count += 1
print(count)
#%% md
* 이렇게 풀면 무조건 한칸씩?? 만 움직이게 되는 데
* 수평2 수직 1 or 수직1 수평2 이런식으로 연속적으로 움직이는 걸 어떻게 표현하는 지가 어렵다.
#%% md
풀이과정
# 현재 나이트의 위치 입력받기
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1
# 나이트가 이동할 수 있는 8가지 방향 정의
steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (-1, 2), (2, -1), (1, 2), (2, 1)]
# 8가지 방향에 대하여 각 위치로 이동이 가능한지 확인
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)
#%% md
* 아..! 거의 다 했는데
* steps = [(-2, -1), (-1, -2), (1, -2), (-2, 1), (-1, 2), (2, -1), (1, 2), (2, 1)]
* 이 부분 리스트로 선언하는 거랑, 그걸로 반복문 돌리는 걸 생각못했다.
* 문제 해결 과정은 다 맞춘 것 같은데... 아쉽다.