문제풀이/백준
5430 - AC
동바리
2023. 1. 5. 11:25
https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
from audioop import reverse
import sys
from collections import deque
t = int(input())
for i in range(t):
reverse_cnt = 0
p = sys.stdin.readline().rstrip()
n = int(input())
arr = deque(sys.stdin.readline().rstrip()[1:-1].split(","))
j = True
for i in range(0, len(p)):
if p[i] == 'R':
reverse_cnt += 1
elif p[i] == 'D':
if n == 0 or len(arr) == 0:
print("error")
j = False
break
if reverse_cnt % 2 == 0:
arr.popleft()
continue
arr.pop()
if (j == False):
continue
if reverse_cnt % 2 == 0:
print("[" + ",".join(arr) + "]")
else:
arr.reverse()
print("[" + ",".join(arr) + "]")
- R 함수가 있다해서, 반드시 뒤집을 필요 없습니다. 만날때마다 뒤집기를 실행하면 시간 초과가 발생합니다.
- R 함수 카운트가 홀수일 경우만 뒤집어주면 됩니다. 왜냐하면 "RR" 이렇게 두번 나온다면 원래 배열과 동일하기 때문입니다. "R" 또는 "RRR" 이런식의 홀수 카운트라면 뒤집는게 유효합니다.