PS

[๋ฐฑ์ค€] 8911 ๊ฑฐ๋ถ์ด with Python

ํ˜•์ค€_It's 2022. 3. 21. 18:32
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 8911 ๊ฑฐ๋ถ์ด

๐Ÿ’ก ์กฐ๊ฑด

  1. 2์ฐจ์› ํ‰๋ฉด ์œ„์—์„œ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ถ์ด ๋กœ๋ด‡์„ ํ•˜๋‚˜ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฑฐ๋ถ์ด ๋กœ๋ด‡์—๊ฒŒ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋„ค๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
    F: ํ•œ ๋ˆˆ๊ธˆ ์•ž์œผ๋กœ
    B: ํ•œ ๋ˆˆ๊ธˆ ๋’ค๋กœ
    L: ์™ผ์ชฝ์œผ๋กœ 90๋„ ํšŒ์ „
    R: ์˜ค๋ฅธ์ชฝ์œผ๋กœ 90๋„ ํšŒ์ „

  2. L๊ณผ R๋ช…๋ น์„ ๋‚ด๋ ธ์„ ๋•Œ, ๋กœ๋ด‡์€ ์ด๋™ํ•˜์ง€ ์•Š๊ณ , ๋ฐฉํ–ฅ๋งŒ ๋ฐ”๊พผ๋‹ค.
    ๊ฑฐ๋ถ์ด๋Š” ํ•ญ์ƒ x์ถ•๊ณผ y์ถ•์— ํ‰ํ–‰ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ํ•œ๋‹ค.

  3. ๊ฑฐ๋ถ์ด๊ฐ€ ์ง€๋‚˜๊ฐ„ ์˜์—ญ์„ ๋ชจ๋‘ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ง์‚ฌ๊ฐํ˜•์˜ ๋„“์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.
    ๋‹จ, ์ง์‚ฌ๊ฐํ˜•์˜ ๋ชจ๋“  ๋ณ€์€ x์ถ•์ด๋‚˜ y์ถ•์— ํ‰ํ–‰์ด์–ด์•ผ ํ•œ๋‹ค.

  4. ๊ฑฐ๋ถ์ด๋Š” ๊ฐ€์žฅ ์ฒ˜์Œ์— (0, 0)์— ์žˆ๊ณ , ๋ถ์ชฝ์„ ์ณ๋‹ค๋ณด๊ณ  ์žˆ๋‹ค.

  5. ์ด ๊ฒฝ์šฐ์— ๊ฑฐ๋ถ์ด๊ฐ€ ์ง€๋‚˜๊ฐ„ ์˜์—ญ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ์ง์‚ฌ๊ฐํ˜•์€ ์„ ๋ถ„์ด๊ณ , ์„ ๋ถ„์€ ํ•œ ๋ณ€์ด 0์ธ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
    ๋”ฐ๋ผ์„œ, ์„ ๋ถ„์˜ ๊ฒฝ์šฐ์— ๋„“์ด๋Š” 0์ด ๋œ๋‹ค.

  6. ๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์œ ํ˜•์˜ ๋ฌธ์ œ

๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

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. ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š”๋Œ€๋กœ ๊ตฌํ˜„์„ ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

  2. ๋ฐฉํ–ฅ๊ฐ’์„ +1 ํ•ด์ค„ ๋•Œ 4๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋ฉด ๋”์šฑ ํŽธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’พ ๋А๋‚€์ 

  1. ์žฌ๋ฐŒ๋‹ค.
๋ฐ˜์‘ํ˜•