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)