๋ฐฑ์ค€

[๋ฐฑ์ค€-Python] ๊ฑฐ๋ถ์ด : 8911๋ฒˆ

Yuuuki 2024. 6. 13. 23:39

๐Ÿฅˆ Silver3

https://www.acmicpc.net/problem/8911

 

 

 

 

 

 

 

โœ… ์ •๋‹ตํ’€์ด

import sys

input = sys.stdin.readline

n = int(input()) 

dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]

for _ in range(n):
    commands = input().strip() 

   
    direction = 0  # ์ดˆ๊ธฐ๋ฐฉํ–ฅ=๋ถ์ชฝ (0: ๋ถ, 1: ๋™, 2: ๋‚จ, 3: ์„œ)
    x, y = 0, 0  # ์ดˆ๊ธฐ์œ„์น˜
    min_x, min_y = 0, 0
    max_x, max_y = 0, 0

    for command in commands:
        if command == 'F':
            x += dx[direction]   # ํ˜„์žฌ ๋ฐฉํ–ฅ์—์„œ dx,dy๋งŒํผ ์ด๋™
            y += dy[direction]
        elif command == 'B':
            x -= dx[direction]
            y -= dy[direction]   # ํ˜„์žฌ ๋ฐฉํ–ฅ์˜ ๋ฐ˜๋Œ€๋กœ dx,dy๋งŒํผ ์ด๋™
        elif command == 'L':
            direction = (direction - 1) % 4    # ๋ฐฉํ–ฅ ์—…๋ฐ์ดํŠธ
        elif command == 'R':
            direction = (direction + 1) % 4

        # ์ขŒํ‘œ ์ด๋™ ํ›„ ์ตœ์†Œ,์ตœ๋Œ€๊ฐ’ ์—…๋ฐ์ดํŠธ
        min_x = min(min_x, x)
        min_y = min(min_y, y)
        max_x = max(max_x, x)
        max_y = max(max_y, y)

    # ์ง์‚ฌ๊ฐํ˜• ๋„“์ด ๊ณ„์‚ฐ
    result = (max_x - min_x) * (max_y - min_y)
    print(result)

 

๋ฐฉํ–ฅ ๋•Œ๋ฌธ์— ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค ๐Ÿ˜ข

๋ถ,์„œ,๋‚จ,๋ถ ๋ฐฉํ–ฅ์„ ์ˆซ์ž๊ฐ’์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด์„œ, ์ด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ด๋™ dx,dy์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

F,B์˜ ์ด๋™ ๋ช…๋ น์€ direction์˜ ๋ฐฉํ–ฅ์„ ํ† ๋Œ€๋กœ ์ด๋™๊ฐ’์„ dx,dy๊ฐ’์„ ์‚ฌ์šฉํ•ด ์ด๋™์‹œ์ผœ์ฃผ๊ณ ,

L,R์˜ ๋ฐฉํ–ฅ ์ „ํ™˜ ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณต์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

โ—๏ธํŒŒ์ด์ฌ์˜ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์ž(%)๋Š” ์Œ์ˆ˜๋ฅผ ์–‘์ˆ˜์™€ ์–‘์ˆ˜์™€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์Œ์ˆ˜๋ฅผ ์ฒ˜๋ฆฌ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

print(-1%3) #2
print(-2%5) #3

-1+3=2

-2+5=3

 

 

๋ช…๋ น์— ๋”ฐ๋ผ ์ด๋™ํ•˜๋ฉด์„œ, ์ตœ์†Œ ์ตœ๋Œ€์˜ x,y ์ขŒํ‘œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋’ค ์ตœ์ข…์ ์œผ๋กœ ๋„“์ด๋ฅผ ๊ตฌํ•œ๋‹ค.