article thumbnail image
Published 2023. 5. 15. 21:26

쉬운 것 부터 알고리즘 다시 시작!

 

import sys
# sys.stdin = open('input.txt', 'r')

move_map = {
    "R": [0, 1],
    "L": [0, -1],
    "B": [1, 0],
    "T": [-1, 0],
    "RT": [-1, 1],
    "LT": [-1, -1],
    "RB": [1, 1],
    "LB": [1, -1]
}

def move_chess(piece_r, piece_c, move):
    return piece_r + move_map[move][0], piece_c + move_map[move][1]

def is_valid_position(r, c):
    return 0 <= r < 8 and 0 <= c < 8

def main():
    king, stone, N = sys.stdin.readline().split()
    N = int(N)

    king_r = 8 - int(king[1])
    king_c = ord(king[0]) - 65

    stone_r = 8 - int(stone[1])
    stone_c = ord(stone[0]) - 65

    for _ in range(N):
        move = sys.stdin.readline().strip()
        tmp_king_r, tmp_king_c = move_chess(king_r, king_c, move)
        if tmp_king_r == stone_r and tmp_king_c == stone_c:
            tmp_stone_r, tmp_stone_c = move_chess(stone_r, stone_c, move)
            if is_valid_position(tmp_stone_r, tmp_stone_c):
                stone_r = tmp_stone_r
                stone_c = tmp_stone_c
            else:
                continue

        if is_valid_position(tmp_king_r, tmp_king_c):
            king_r = tmp_king_r
            king_c = tmp_king_c

    print(f'{chr(king_c+65)}{8-king_r}')
    print(f'{chr(stone_c+65)}{8-stone_r}')

if __name__ == '__main__':
    main()

'백준' 카테고리의 다른 글

백준 14889 스타트와 링크 (파이썬)  (0) 2023.05.22
백준 1021 회전하는 큐 (파이썬)  (0) 2023.05.22
백준 14716 현수막 (자바)  (0) 2023.01.16
백준 1463 1로 만들기 (파이썬)  (2) 2023.01.16
백준 1074 Z (파이썬)  (0) 2022.12.25
복사했습니다!