1873.상호의 배틀필드
풀이
def checkborder(H, W, i, j):
    if (0 <= i < H) and (0 <= j < W):
        return True
    return False
def getdirection(shape):
    if shape == '^':
        return -1, 0
    elif shape == 'v':
        return 1, 0
    elif shape == '>':
        return 0, 1
    elif shape == '<':
        return 0, -1
def play(board, H, W, i, j, c):
    if c == "U":
        board[i][j] = '^'
        if checkborder(H, W, i-1, j):
            if board[i-1][j] == '.':
                board[i][j] = '.'
                board[i-1][j] = '^'
                return i-1, j
    elif c == "D":
        board[i][j] = 'v'
        if checkborder(H, W, i+1, j):
            if board[i+1][j] == '.':
                board[i][j] = '.'
                board[i+1][j] = 'v'
                return i+1, j
    elif c == "R":
        board[i][j] = '>'
        if checkborder(H, W, i, j+1):
            if board[i][j+1] == '.':
                board[i][j] = '.'
                board[i][j+1] = '>'
                return i, j+1
    elif c == "L":
        board[i][j] = '<'
        if checkborder(H, W, i, j-1):
            if board[i][j-1] == '.':
                board[i][j] = '.'
                board[i][j-1] = '<'
                return i, j-1
    elif c == "S":
        idir, jdir = getdirection(board[i][j])
        bullet_i = i + idir
        bullet_j = j + jdir
        while checkborder(H, W, bullet_i, bullet_j):
            if board[bullet_i][bullet_j] == '*':
                board[bullet_i][bullet_j] = '.'
                break
            elif board[bullet_i][bullet_j] == '#':
                break
            bullet_i = bullet_i + idir
            bullet_j = bullet_j + jdir
    return i, j
T = int(input())
answer = []
for tc in range(1, T + 1):
    H, W = map(int, input().split())
    board = []
    starti, startj = 0, 0
    for _ in range(H):
        board.append(list(input()))
    for i in range(H):
        check = 0
        for j in range(W):
            if board[i][j] in '^v><':
                starti, startj = i, j
                check = 1
                break                
    
    N = int(input())
    commands = list(input())
    i, j = starti, startj
    for command in commands:
        i, j = play(board, H, W, i, j, command)
    result = ''
    for line in board:
        result += ''.join(line) + '\n'
    result = result.rstrip('\n')
    answer.append(result)
for tc in range(1, T+1):
    print(f'#{tc} {answer[tc-1]}')