a={'A':0,'B':1,'C':2,'D':3,'E':4,'F':5,'G':6,'H':7}
b = {v: k for k, v in a.items()}
d = {'R':(0,1),'L':(0,-1),'B':(-1,0),'T':(1,0),'RT':(1,1),'LT':(1,-1),'RB':(-1,1),'LB':(-1,-1),}
king, stone,n=input().split()
n=int(n)
king_loc = [int(king[1])-1,a[king[0]]]
stone_loc = [int(stone[1])-1,a[stone[0]]]
for _ in range(n):
move=input()
i,j = d[move]
if 0<=king_loc[0]+i<8 and 0<=king_loc[1]+j<8:
if(king_loc[0]+i==stone_loc[0] and king_loc[1]+j==stone_loc[1]):
if(0<=stone_loc[0]+i<8 and 0<=stone_loc[1]+j<8):
stone_loc[0]+=i
stone_loc[1]+=j
king_loc[0]+=i
king_loc[1]+=j
else:
king_loc[0]+=i
king_loc[1]+=j
print(b[king_loc[1]]+str(king_loc[0]+1))
print(b[stone_loc[1]]+str(stone_loc[0]+1))
풀이
체스판에서 돌과 킹의 위치를 움직인 후 위치를 출력해라
킹과 돌 그리고 움직이는 횟수 n을 입력 받는다.
입력 받은 좌표값을 정수로 바꿔주고 움직임을 입력받으며 움직인다.
킹의 다음 움직임이 체스판 안에 있고, 그곳이 돌의 위치가 아닐경우
킹의 다음 움직임이 체스판 안에 있고, 그곳이 돌의 위치이고, 돌을 킹과 같은 방향으로 움직였을 때 체스판 안에 있는 경우
이렇게 두가지만 체크해서 움직인다.
움직이는 경우는
다 움직인 후 정수를 다시 체스판 위치 문자열로 바꾸서 출력한다.
특이사항
처음에는 직접 체스판을 구현하려고 했지만, 단순히 좌표만 구하는 거면 굳이 안그래도 되겠다고 생각