[๋ฐฑ์ค] 8911 ๊ฑฐ๋ถ์ด with Python
๐ BOJ 8911 ๊ฑฐ๋ถ์ด
๐ก ์กฐ๊ฑด
2์ฐจ์ ํ๋ฉด ์์์ ์์ง์ผ ์ ์๋ ๊ฑฐ๋ถ์ด ๋ก๋ด์ ํ๋ ๊ฐ์ง๊ณ ์๋ค. ๊ฑฐ๋ถ์ด ๋ก๋ด์๊ฒ ๋ด๋ฆด ์ ์๋ ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ด ๋ค๊ฐ์ง๊ฐ ์๋ค.
F: ํ ๋๊ธ ์์ผ๋ก
B: ํ ๋๊ธ ๋ค๋ก
L: ์ผ์ชฝ์ผ๋ก 90๋ ํ์
R: ์ค๋ฅธ์ชฝ์ผ๋ก 90๋ ํ์ L๊ณผ R๋ช ๋ น์ ๋ด๋ ธ์ ๋, ๋ก๋ด์ ์ด๋ํ์ง ์๊ณ , ๋ฐฉํฅ๋ง ๋ฐ๊พผ๋ค.
๊ฑฐ๋ถ์ด๋ ํญ์ x์ถ๊ณผ y์ถ์ ํํํ ๋ฐฉํฅ์ผ๋ก๋ง ์ด๋ํ๋ค.๊ฑฐ๋ถ์ด๊ฐ ์ง๋๊ฐ ์์ญ์ ๋ชจ๋ ํฌํจํ ์ ์๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ์ ๋์ด๋ฅผ ๊ตฌํ๋ ๋ฌธ์ .
๋จ, ์ง์ฌ๊ฐํ์ ๋ชจ๋ ๋ณ์ x์ถ์ด๋ y์ถ์ ํํ์ด์ด์ผ ํ๋ค.๊ฑฐ๋ถ์ด๋ ๊ฐ์ฅ ์ฒ์์ (0, 0)์ ์๊ณ , ๋ถ์ชฝ์ ์ณ๋ค๋ณด๊ณ ์๋ค.
์ด ๊ฒฝ์ฐ์ ๊ฑฐ๋ถ์ด๊ฐ ์ง๋๊ฐ ์์ญ์ ๋ชจ๋ ํฌํจํ๋ ์ง์ฌ๊ฐํ์ ์ ๋ถ์ด๊ณ , ์ ๋ถ์ ํ ๋ณ์ด 0์ธ ์ง์ฌ๊ฐํ์ผ๋ก ์๊ฐํ ์ ์๋ค.
๋ฐ๋ผ์, ์ ๋ถ์ ๊ฒฝ์ฐ์ ๋์ด๋ 0์ด ๋๋ค.๊ตฌํ, ์๋ฎฌ๋ ์ด์ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin
for _ in range(int(stdin.readline())):
x, y, direction = 0, 0, 0
visited = set()
for command in list(stdin.readline().rstrip()):
if command == 'F':
if direction == 0:
y += 1
elif direction == 1:
x += 1
elif direction == 2:
y -= 1
else:
x -= 1
elif command == 'B':
if direction == 0:
y -= 1
elif direction == 1:
x -= 1
elif direction == 2:
y += 1
else:
x += 1
elif command == 'L':
if direction == 0:
direction = 3
else:
direction -= 1
elif command == 'R':
direction += 1
direction %= 4
visited.add((x, y))
max_x, min_x = 0, 0
max_y, min_y = 0, 0
for x, y in visited:
max_x, max_y = max(max_x, x), max(max_y, y)
min_x, min_y = min(min_x, x), min(min_y, y)
height = abs(max_y) + abs(min_y)
width = abs(max_x) + abs(min_x)
print(height * width)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
3
FFLF
FFRRFF
FFFBBBRFFFBBB
์คํ๊ฒฐ๊ณผ
2
0
9
โจ๏ธ ๋ฌธ์ ํ์ด
๋ฌธ์ ์์ ์๊ตฌํ๋๋๋ก ๊ตฌํ์ ํ๋ฉด ๋๋ ๋ฌธ์ ์ ๋๋ค.
๋ฐฉํฅ๊ฐ์ +1 ํด์ค ๋ 4๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ฉด ๋์ฑ ํธํฉ๋๋ค.
๐พ ๋๋์
- ์ฌ๋ฐ๋ค.