Koala - 18기/코딩테스트 심화 스터디
[백준/python] 8911: 거북이
ㄱㅈㅅㅇ
2025. 4. 6. 18:03
https://www.acmicpc.net/problem/8911
기초적인 시뮬레이션 문제이다. 이동했을 때 가장 작은 x, y값과 가장 큰 x, y값을 기억했다가 크기를 구하면 된다.
이처럼 x, y의 상하좌우 배열을 만들어놓고 상태에 따라 인덱스를 바꿔끼는 풀이는 자주 보이니 기억해둬야겠다.
dx = [-1,0,1,0]
dy = [0,-1,0,1]
def control(s,x,y,dir):
if s == 'F':
x += dx[dir]
y += dy[dir]
return dir, x, y
elif s == 'B':
x -= dx[dir]
y -= dy[dir]
return dir, x, y
elif s == 'L':
if dir == 3: dir = 0
else: dir += 1
else:
if dir == 0: dir = 3
else: dir -= 1
return dir, x, y
def main():
t = int(input())
for _ in range(t):
case = list(input().strip())
# print(case)
dir = 3
nowx = 0
nowy = 0
minx, miny, maxx, maxy = 0,0,0,0
for s in case:
dir, nowx, nowy = control(s,nowx, nowy, dir)
minx = min(minx, nowx)
miny = min(miny, nowy)
maxx = max(maxx, nowx)
maxy = max(maxy, nowy)
print((maxx-minx)*(maxy-miny))