ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 8911 ๊ฑฐ๋ถ์ด with Python
    PS 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. ์žฌ๋ฐŒ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.