참고사이트: 발현되지 못한 잠재력
문제링크 : https://www.acmicpc.net/problem/5430
arr = sys.stdin.readline()[1:-2].split(",")
: R의 개수를 파악해서 홀수, 짝수일 때를 파악해 앞에서 자를지 뒤에서 자를지 결정
arr = input()[1:-2].split(',')
cmd_p = cmd_p.replace('RR','') #R이 두번이면 원상 복구 되므로 명령어에서 제거
print('[' + ','.join(arr[::-1]) + ']')
print('[' + ','.join(arr) + ']')
: 그러면 O(n)으로 끝낼 수 있다.
import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
cmd_p = input()
n = int(input())
arr = input()[1:-2].split(',')
cmd_p = cmd_p.replace('RR','') #R이 두번이면 원상 복구 되므로 명령어에서 제거
cntR = 0
delF, delB = 0, 0 # R의 개수에 따라 앞에서 제거할지 뒤에서 제거할지 세는 변수
for cmd in cmd_p:
if cmd == 'R':
cntR += 1
elif cmd == 'D':
if cntR%2 == 0:
delF += 1
else:
delB += 1
if delF+delB <= n:
arr = arr[delF:n-delB]
if cntR%2 == 1:
print('[' + ','.join(arr[::-1]) + ']')
else:
print('[' + ','.join(arr) + ']')
else:
print('error')