호프 2021. 7. 26. 11:13

https://www.acmicpc.net/problem/5430

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

1. 문자열 입력에서 앞 뒤의 '[', ']' 와 숫자 중간의 ','를 제거한다.

2. 큐를 만들어 문자열을 넣는다.

3. flag를 만들어 R이 나오는 경우에는 -1을 곱해준다.

3. D가 나오고 flag가 1인 경우에는 앞에서 pop, flag가 -1인 경우에는 뒤에서 pop 해준다.

4. 마지막으로 flag가 -1이면 배열을 뒤집어준 후 조건에 맞춰 출력한다.

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

T = int(input())
for _ in range(T):
    p = list(input().rstrip())
    n = int(input())
    x = list(input()[1:-2].split(','))
    q = deque()
    flag = 1 #앞

    if (n != 0):
        q = deque(x)

    for i in p:
        if (i=='R'):
            flag *= -1
        elif (i=='D'):
            if not q:
                flag = 0
                print("error")
                break
            elif (flag == 1):
                q.popleft()
            elif (flag == -1):
                q.pop()

    if (flag != 0):
        if (flag == -1):
            q.reverse()
        print('['+','.join(q)+']')

처음에 주어진 문자열을 가공하는 방법과, 마지막에 주어진 조건대로 출력하는 방법을 잘 기억해놓자. 파이썬의 장점은 문자열 처리니까 장점을 잘 활용하기 위해서는 문자열 처리 방법을 잘 알아놓아야 한다.