๐Ÿ“š Study/Baekjoon

[Gold V] 5430 - AC

์œฐ๊ฐฑ 2025. 5. 15. 21:32

๋ฌธ์ œ

์„ ์˜์ด๋Š” ์ฃผ๋ง์— ํ•  ์ผ์ด ์—†์–ด์„œ ์ƒˆ๋กœ์šด ์–ธ์–ด 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๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

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

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

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

# ํ’€์ด ๋ฐฉ๋ฒ•

deque๋กœ ์ ‘๊ทผํ•  ์ƒ๊ฐ์„ ๋ชปํ—€์Œ. ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ deque๋กœ ๊ตฌํ˜„ํ–ˆ์–ด์•ผ ํ•จ

 

์ด ๋ฌธ์ œ์—์„œ๋Š”?

  • ์—ฐ์‚ฐ "D"๊ฐ€ ์•ž์ด๋‚˜ ๋’ค์—์„œ ์›์†Œ๋ฅผ ์ง€์šฐ๋Š” ๋™์ž‘์ด ๋ฐ˜๋ณต๋จ
  • "R"์ด ๋งŽ์•„์ง€๋ฉด ๋ฐฉํ–ฅ์ด ๋ฐ”๋€Œ์–ด์„œ ์•ž→๋’ค / ๋’ค→์•ž ์‚ญ์ œ๊ฐ€ ๋ฒˆ๊ฐˆ์•„ ๋‚˜์˜ด
  • ์ด ๊ฒฝ์šฐ ๋ฆฌ์ŠคํŠธ๋กœ arr[1:], arr[:-1] ๊ฐ™์€ ์—ฐ์‚ฐ์€ ๋งค๋ฒˆ ๋ณต์‚ฌ๋˜์–ด ๋งค์šฐ ๋น„ํšจ์œจ์ 
  • deque๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•จ

โœจ ์ˆ˜์ • ํฌ์ธํŠธ ์š”์•ฝ (list > deque)

  1. arr์„ deque๋กœ ๋ณ€ํ™˜
  2. reverse()๋ฅผ ์‚ญ์ œํ•˜๊ณ  is_reversed ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ
  3. delete()๋„ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ popleft() ๋˜๋Š” pop()์„ ์ˆ˜ํ–‰
  4. ์ตœ์ข… ์ถœ๋ ฅ ์‹œ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ list(deque) ๋˜๋Š” reversed(deque)๋ฅผ ์ถœ๋ ฅ

 

๐Ÿ”” map ํ•จ์ˆ˜ ์‚ฌ์šฉ ํŒ

์ƒํ™ฉ/์ฝ”๋“œ/์˜ˆ์‹œ

๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ˆซ์ž ์ž…๋ ฅ list(map(int, input().split()))
๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ map(int, ['1', '2'])
์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ map(str, [1, 2, 3])
ํ•œ ์ค„๋กœ ๋ณ€ํ™˜ + ์ถœ๋ ฅ print(','.join(map(str, nums)))

# ์ฝ”๋“œ

# 2025-05-15 20:25 - 21:05
from collections import deque
import sys
sys.stdin = open("input.txt","r")
'''
R(๋’ค์ง‘๊ธฐ): ๋ฐฐ์—ด์— ์žˆ๋Š” ์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š” ํ•จ์ˆ˜
D(๋ฒ„๋ฆฌ๊ธฐ): ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜ (๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š”๋ฐ D๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋Š” ์—๋Ÿฌ)

'''

T = int(sys.stdin.readline().strip())

def func(p, arr):
    is_reversed = False
    for pp in p:
        if pp == 'R':
            is_reversed = not is_reversed
        elif pp == 'D':
            if len(arr) == 0:
                print('error'); return
            if is_reversed:
                arr.pop()
            else:
                arr.popleft()
    
    if is_reversed:
        arr.reverse()

    print('[' + ','.join(map(str,arr)) + ']')

for _ in range(T):
    p = list(sys.stdin.readline().strip())
    n = int(sys.stdin.readline().strip())
    
    if n != 0:
        arr = sys.stdin.readline().strip()[1:-1].split(',')
        arr = deque(map(int,arr))
    elif n == 0:
        sys.stdin.readline()
        arr = deque()
    func(p, arr)

# ์ฐธ๊ณ  (๋ฆฌ์ŠคํŠธ๋ฒ„์ „_์‹œ๊ฐ„์ดˆ๊ณผ)

# 2025-05-15 20:25 - 21:05
import sys
sys.stdin = open("input.txt","r")
'''
R(๋’ค์ง‘๊ธฐ): ๋ฐฐ์—ด์— ์žˆ๋Š” ์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘๋Š” ํ•จ์ˆ˜
D(๋ฒ„๋ฆฌ๊ธฐ): ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๋ฒ„๋ฆฌ๋Š” ํ•จ์ˆ˜ (๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š”๋ฐ D๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋Š” ์—๋Ÿฌ)

'''

T = int(sys.stdin.readline().strip())

def reverse(arr):
    arr_arr = []
    for i in range(len(arr)-1, -1, -1):
        arr_arr.append(arr[i])
    return arr_arr

def delete(arr):
    return arr[1:]

def func(p, arr):    
    for pp in p:
        if pp == 'R':
            arr = reverse(arr)
        elif pp == 'D':
            if len(arr) == 0:
                print('error'); return
            arr = delete(arr)
    
    result = '['
    for a in arr:
        result += f'{str(a)},'
    result = result[:-1] + ']'
    print(result)

for _ in range(T):
    p = list(sys.stdin.readline().strip())
    n = int(sys.stdin.readline().strip())
    
    if n != 0:
        arr = sys.stdin.readline().strip()[1:-1].split(',')
        arr = list(map(int,arr))
    elif n == 0:
        sys.stdin.readline()
        arr = []
    func(p, arr)

'๐Ÿ“š Study > Baekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Gold V] 16719 - ZOAC  (0) 2025.05.12
[Silver I] 1495 - ๊ธฐํƒ€๋ฆฌ์ŠคํŠธ  (0) 2025.05.11
[Gold IV] 32187 - ๊ธ‰์‹ ๋ฐฐ์‹  (0) 2025.05.10
[Gold V] 1931 - ํšŒ์˜์‹ค ๋ฐฐ์ •  (0) 2025.05.10
[Gold V] 20207 - ๋‹ฌ๋ ฅ  (0) 2025.05.09