Algorithm/구현
[백준 8911번] 거북이
09009
2023. 11. 3. 20:41
문제 보기
https://www.acmicpc.net/problem/8911
8911번: 거북이
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져
www.acmicpc.net



소스 코드
import sys
input = sys.stdin.readline
dx = [0,-1,0,1]
dy = [1,0,-1,0]
t = int(input())
for _ in range(t):
arr = list(input().strip())
x, y = 0, 0
direction = 0
# road : 방문한 좌표들을 모두 기록한다.
road = [(x,y)]
for i in arr:
if i == 'F':
x += dx[direction]
y += dy[direction]
elif i == 'B':
x -= dx[direction]
y -= dy[direction]
elif i == 'L':
if direction == 3:
direction = 0
else:
direction += 1
elif i == 'R':
if direction == 0:
direction = 3
else:
direction -= 1
road.append((x,y))
width = max(road, key = lambda x:x[0])[0] - min(road, key = lambda x:x[0])[0]
height = max(road, key = lambda x:x[1])[1] - min(road, key = lambda x:x[1])[1]
print(width * height)