[BOJ][๐ŸŸก5][๋ฐฑ์ค€#05430] AC

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #5430


๋ฌธ์ œ

์„ ์˜์ด๋Š” ์ฃผ๋ง์— ํ•  ์ผ์ด ์—†์–ด์„œ ์ƒˆ๋กœ์šด ์–ธ์–ด AC๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. AC๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด์— ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ์–ธ์–ด์ด๋‹ค. ์ด ์–ธ์–ด์—๋Š” ๋‘ ๊ฐ€์ง€ ํ•จ์ˆ˜ R(๋’ค์ง‘๊ธฐ)๊ณผ D(๋ฒ„๋ฆฌ๊ธฐ)๊ฐ€ ์žˆ๋‹ค. ํ•จ์ˆ˜ R์€ ๋ฐฐ์—ด์— ์žˆ๋Š” ์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š” ํ•จ์ˆ˜์ด๊ณ , D๋Š” ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š”๋ฐ D๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ํ•จ์ˆ˜๋Š” ์กฐํ•ฉํ•ด์„œ ํ•œ ๋ฒˆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, โ€œABโ€๋Š” A๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ์— ๋ฐ”๋กœ ์ด์–ด์„œ B๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, โ€œRDDโ€๋Š” ๋ฐฐ์—ด์„ ๋’ค์ง‘์€ ๋‹ค์Œ ์ฒ˜์Œ ๋‘ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ๊ฐ’๊ณผ ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. T๋Š” ์ตœ๋Œ€ 100์ด๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ์ˆ˜ํ–‰ํ•  ํ•จ์ˆ˜ p๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. p์˜ ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. (0 โ‰ค n โ‰ค 100,000) ๋‹ค์Œ ์ค„์—๋Š” [x1,โ€ฆ,xn]๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค xi โ‰ค 100) ์ „์ฒด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์ฃผ์–ด์ง€๋Š” p์˜ ๊ธธ์ด์˜ ํ•ฉ๊ณผ n์˜ ํ•ฉ์€ 70๋งŒ์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.


์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ •์ˆ˜ ๋ฐฐ์—ด์— ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์—๋Š” error๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


์˜ˆ์ œ

์ž…๋ ฅ

4
RDD
4
[1,2,3,4]
DD
1
[42]
RRD
6
[1,1,2,3,5,8]
D
0
[]


์ถœ๋ ฅ

[2,1]
error
[1,2,3,5,8]
error


My Sol

import sys
input = sys.stdin.readline
from collections import deque

def main():
    txt = input().rstrip()
    N = int(input())

    content = input().rstrip().strip('[').strip(']')
    Q = deque(content.split(',')) if content else deque()

    opp = 0
    for t in txt:
        # ํ•จ์ˆ˜๊ฐ€ R์ด๋ฉด ๋ฐฉํ–ฅ ๋ฐ”๊ฟˆ
        if t == 'R':
            opp ^= 1
            continue

        # ํ•จ์ˆ˜๊ฐ€ D์ธ๋ฐ Q๊ฐ€ ์—†์œผ๋ฉด error
        if not Q: return 'error'

        # ์ •๋ฐฉํ–ฅ์ด๋ฉด popleft ์—ญ๋ฐฉํ–ฅ์ด๋ฉด pop
        Q.pop() if opp else Q.popleft()

    # ์—ญ๋ฐฉํ–ฅ์ด๋ผ๋ฉด Q๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋ฐฐ์น˜
    if opp: Q.reverse()

    return f"[{','.join(Q)}]"


T = int(input())
for _ in range(T):
    print(main())

deque๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๋‚œ์ด๋„๊ฐ€ ๋ง‰ ์–ด๋ ต์ง€๋Š” ์•Š์•˜์ง€๋งŒ, ๋ฌธ์ œ์˜ ์ž…์ถœ๋ ฅ ํ˜•์‹์ด ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์•„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์™ธ์ ์ธ ํ˜•์‹์ ์ธ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๋‹ค.

์šฐ์„  ํ•จ์ˆ˜์™€ ๋ฆฌ์ŠคํŠธ์˜ ์˜ค๋ฅธ์ชฝ์— ์—ฌ๋ฐฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— rstrip()์„ ํ†ตํ•ด์„œ ์—ฌ๋ฐฑ์„ ์ œ๊ฑฐํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

ํ•ต์‹ฌ์€ ์‹ค์ œ๋กœ ๋ฆฌ์ŠคํŠธ์˜ ์ •์—ญ์ˆœ์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ˆœ์„œ๋ฅผ ์ฒดํฌํ•ด ์•ž๋’ค์˜ ์›์†Œ๋ฅผ ๋นผ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. deque์˜ pop๊ณผ popleft ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๊ณ , opp๋ผ๋Š” ์Šค์œ„์น˜ ๋ณ€์ˆ˜๋ฅผ ๋‘์—ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” 0์œผ๋กœ ๋‘์–ด ์ •์ˆœ์ž„์„ ์˜๋ฏธํ•˜๊ณ , ๋งŒ์•ฝ R์„ ๋งˆ์ฃผํ•  ๋•Œ๋งˆ๋‹ค ๋น„ํŠธ ์—ฐ์‚ฐ xor๋กœ 1๊ณผ 0์„ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

๋งŒ์•ฝ R์ด ์•„๋‹ˆ๋ผ๋ฉด D์ธ๋ฐ ์ด๋•Œ Q์— ์›์†Œ๊ฐ€ ์—†๋‹ค๋ฉด ๋ฐ”๋กœ error์„ returnํ•˜๊ณ , ๊ทธ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด opp์— ๋”ฐ๋ผ ์•ž๋’ค์˜ ์›์†Œ๋ฅผ ๋ฐ”๊ฟ”์„œ ๋นผ๋‚ด์ค€๋‹ค.

์ด ๊ณผ์ •์„ ๋ชจ๋‘ ๊ฑฐ์นœ ๋’ค, opp๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ฆ‰ ์—ญ์ˆœ์ด๋ผ๋ฉด Q๋ฅผ reverseํ•ด์„œ ์ถœ๋ ฅ ํ˜•์‹์— ๋งž์ถœ ์ค€๋น„๋ฅผ ํ•œ๋‹ค.

f-string๊ณผ join์„ ์ด์šฉํ•ด ๊ณต๋ฐฑ ์—†๋Š” comma๋กœ ์›์†Œ๊ฐ„ ๊ตฌ๋ถ„์„ ํ•˜์—ฌ returnํ•œ๋‹ค.

mainํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ๋Š” ์ด๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

์•ฝ 3๋‹ฌ ์ „์— ์‹œ๋„ํ–ˆ๋‹ค๊ฐ€ ์‹คํŒจํ•˜๊ณ , 1๋‹ฌ ์ „์— ์‹œ๋„ํ–ˆ๋‹ค๊ฐ€ ์‹คํŒจํ–ˆ๋Š”๋ฐ, ์˜ค๋Š˜ ๊ฝค๋‚˜ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๋†€๋ผ์› ๋‹ค.

image

๋ฐฑ์ค€ ๊ณจ๋“œ1์˜ ์ฒซ ๋ฐœ์„ ๋‚ด๋”›๋Š” PS๊ฐ€ ์ด์ „์˜ ์‹คํŒจ๋ฅผ ๊ทน๋ณตํ•œ PS์—ฌ์„œ ๋„ˆ๋ฌด๋‚˜ ์˜๋ฏธ ์žˆ๊ณ  ๊ธฐ์˜๋‹ค.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ