dx, dy테크닉을 이용하여 문제를 해결해 보았다.
# 북 동 남 서 순으로 dx, dy 설정
dx, dy = [0, 1, 0, -1], [1, 0, -1, 0]
# t 입력
t = int(input())
for _ in range(t):
# 북쪽 바라보고 시작
dir_num = 0
# x, y 초기설정
x, y = 0, 0
# 최소 최댓값 설정
min_x, max_x, min_y, max_y = 0, 0, 0, 0
# order 입력
orders = input()
for order in orders:
# 전진
if order == 'F':
x, y = x + dx[dir_num], y + dy[dir_num]
# 후진
elif order == 'B':
x, y = x + dx[(dir_num + 2) % 4], y + dy[(dir_num + 2) % 4]
# 왼쪽 90도 회전
elif order == 'L':
dir_num = (dir_num - 1 + 4) % 4
# 오른쪽 90도 회전
elif order == 'R':
dir_num = (dir_num + 1) % 4
# 최대 최소 관리
if x < min_x:
min_x = x
if x > max_x:
max_x = x
if y < min_y:
min_y = y
if y > max_y:
max_y = y
# 출력
print((max_x - min_x) * (max_y - min_y))
'Algorithm(BOJ, Python) > Simulation' 카테고리의 다른 글
[백준_2174] 로봇 시뮬레이션 python (2) | 2022.09.16 |
---|---|
[백준_14499] 주사위굴리기 python (0) | 2022.09.04 |
[백준_14503] 로봇청소기 python (0) | 2022.08.28 |
[백준_5215] 지구온난화 python (0) | 2022.08.09 |
[백준_1063] 킹 python (0) | 2022.08.04 |