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)+']')
처음에 주어진 문자열을 가공하는 방법과, 마지막에 주어진 조건대로 출력하는 방법을 잘 기억해놓자. 파이썬의 장점은 문자열 처리니까 장점을 잘 활용하기 위해서는 문자열 처리 방법을 잘 알아놓아야 한다.
'알고리즘💻 > 스택&큐&덱' 카테고리의 다른 글
BOJ 1725번: 히스토그램 (0) | 2021.08.06 |
---|---|
BOJ 20301번: 반전 요세푸스 (0) | 2021.07.25 |
BOJ 10799번: 쇠막대기 (0) | 2021.07.24 |
BOJ 2812번: 크게 만들기 (0) | 2021.07.24 |
BOJ 9012번: 괄호 (0) | 2021.07.24 |