2022-07-10 @이영훈
접근 방법
기본적인 시뮬레이션, 구현 문제입니다.
좌표를 이동할 때 제가 사용하는 기본적인 전략은 move_types과 dx, dy 변수를 정의해서 사용합니다.
그리고 이동했을 때의 위치에서 로직처리를 합니다. 이 문제에서는 체스판의 위치를 벗어나지 않았는지, 킹과 돌의 위치가 겹치는 지 이 두가지를 처리하면 됩니다.
파이썬 코드
king, stone, n = input().split()
n = int(n)
king = [ord(king[0]) - ord("A") + 1, int(king[1])]
stone = [ord(stone[0]) - ord("A") + 1, int(stone[1])]
move_types = ["R", "L", "B", "T", "RT", "LT", "RB", "LB"]
dx = [1, -1, 0, 0, 1, -1, 1, -1]
dy = [0, 0, -1, 1, 1, 1, -1, -1]
for _ in range(n):
move = input()
idx = move_types.index(move)
king_delta = [king[0] + dx[idx], king[1] + dy[idx]]
stone_delta = [stone[0] + dx[idx], stone[1] + dy[idx]]
if 1 <= king_delta[0] <= 8 and 1 <= king_delta[1] <= 8:
if king_delta == stone:
if 1 <= stone_delta[0] <= 8 and 1 <= stone_delta[1] <= 8:
king = king_delta
stone = stone_delta
else:
king = king_delta
print(chr(king[0] + ord("A") - 1) + str(king[1]))
print(chr(stone[0] + ord("A") - 1) + str(stone[1]))
Python
복사