문제 바로가기
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드 및 설명
t = int(input())
for test_case in range(1, t+1):
h, w = map(int, input().split()) #h:높이 w:너비
board = [list(input()) for _ in range(h)]
n = int(input())
command = list(input())
dx = [0,1,0,-1]
dy = [-1,0,1,0]
#먼저 탱크의 위치부터 찾는다
for i in range(h):
for j in range(w):
if board[i][j] == "^" or board[i][j] == "v" or board[i][j] == "<" or board[i][j] == ">":
location = [j, i]
break
for c in command:
if c == "S":
if board[location[1]][location[0]] == "^":
for i in range(location[1]-1, -1, -1): #현위치에서 반대로 가면서 체크
if board[i][location[0]] == "*":
board[i][location[0]] = "."
break
if board[i][location[0]] == "#":
break
elif board[location[1]][location[0]] == "v":
for i in range(location[1]+1,h):
if board[i][location[0]] == "*":
board[i][location[0]] = "."
break
if board[i][location[0]] == "#":
break
elif board[location[1]][location[0]] == "<":
for i in range(location[0],-1,-1): #현위치에서 반대로 가면서 체크
if board[location[1]][i] == "*":
board[location[1]][i] = "."
break
if board[location[1]][i] == "#":
break
elif board[location[1]][location[0]] == ">":
for i in range(location[0]+1,w):
if board[location[1]][i] == "*":
board[location[1]][i] = "."
break
if board[location[1]][i] == "#":
break
elif c == "U":
nx = location[0] + dx[0]
ny = location[1] + dy[0]
if 0<=nx<w and 0<=ny<h and board[ny][nx] == ".":
board[ny][nx] = "^"
board[location[1]][location[0]] = "."
location[0], location[1] = nx, ny
else:
board[location[1]][location[0]] = "^"
elif c == "D":
nx = location[0] + dx[2]
ny = location[1] + dy[2]
if 0 <= nx < w and 0 <= ny < h and board[ny][nx] == ".":
board[ny][nx] = "v"
board[location[1]][location[0]] = "."
location[0], location[1] = nx, ny
else:
board[location[1]][location[0]] = "v"
elif c == "L":
nx = location[0] + dx[3]
ny = location[1] + dy[3]
if 0 <= nx < w and 0 <= ny < h and board[ny][nx] == ".":
board[ny][nx] = "<"
board[location[1]][location[0]] = "."
location[0], location[1] = nx, ny
else:
board[location[1]][location[0]] = "<"
elif c == "R":
nx = location[0] + dx[1]
ny = location[1] + dy[1]
if 0 <= nx < w and 0 <= ny < h and board[ny][nx] == ".":
board[ny][nx] = ">"
board[location[1]][location[0]] = "."
location[0], location[1] = nx, ny
else:
board[location[1]][location[0]] = ">"
print("#{}".format(test_case),end = " ")
for i in board:
print("".join(map(str,i)))
'SWEA (SW Expert Academy) > D3' 카테고리의 다른 글
[SWEA/D3] 1240 [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 / 딕셔너리 키,값 초기화에 유의하자 (0) | 2023.05.17 |
---|---|
[SWEA/D3] 1493 수의 새로운 연산 (0) | 2023.05.17 |
[SWEA/D3] 9280 진용이네 주차타워 (0) | 2023.05.16 |
[SWEA/D3] 13038 교환학생 (0) | 2023.05.16 |
[다시풀기] [SWEA/D3] 15612 체스판 위의 룩 위치 (0) | 2023.05.16 |