풀이


주어진 명령에 따라 문자열을 처리하는 구현문제이다.

파이썬에서 기본으로 제공하는 reverse 나 pop 을 통해 쉽게 풀 수 있는 문제였지만, 시간초과로 인해 다른 방법 찾아야했다.

방법은 생각보다 간단하다. 명령어 순서에 따라서 문자열의 좌측 혹은 우측이 얼마나 제거될 것인지 미리 파악을 한 후 인덱싱을 통해 풀면된다.

소스코드


import sys
 
input = sys.stdin.readline
 
T = int(input())
 
for _ in range(T):
    p = input().rstrip()
    p.replace('RR', '')
    n = int(input())
    x = input().rstrip()[1:-1].split(',')
    l, r, b = 0, 0, True
 
    for c in p:
        if c == 'R':
            b = not b
        elif c == 'D':
            if b:
                l += 1
            else:
                r += 1
    
    if l+r > n:
        print('error')
    else:
        x = x[l:n-r]
        if b:
            x = ','.join(x)
        else:
            x = ','.join(x[::-1])
        print(f'[{x}]')

References