백준, AC, 5430

2024. 8. 14. 00:02ETC/Algorithm

[유형]

자료구조, deque

 

[문제링크]

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

 

[요약]

두 가지 함수 R(뒤집기)과 D(버리기)가 있다.

함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오.

 

[문제풀이]

"R"이 나올 때마다 뒤집는게 아니라 뒤집는 횟수를 기억해두고, 홀수일 때에만 뒤집어준다.

flag를 사용하여 1인 경우에는, 에러 메시지를 출력한다.

"D"가 나올 때, 뒤집는 횟수가 홀수일 경우 pop(), 뒤집는 횟수가 짝수일 경우 popleft()를 사용한다.

import sys
from collections import deque


def input():
    return sys.stdin.readline().rstrip()

N = int(input())

for _ in range(N):
    input_function = input()
    len_list = int(input())
    input_list = input()[1:-1].split(",")
    queue = deque(input_list)

    rev = 0
    flag = 0

    if len_list == 0:
        queue = []

    for op in input_function:
        if op == "R":
            rev+=1
        elif op == "D":
            if len(queue) <1:
                flag =1
                print("error")
                break
            else:
                if rev % 2 == 0:
                    queue.popleft()
                else:
                    queue.pop()

    if flag == 0:
        if rev % 2 == 0:
            print("[" + ",".join(queue) + "]")
        else:
            queue.reverse()
            print("[" + ",".join(queue) + "]")

 

'ETC > Algorithm' 카테고리의 다른 글

백준, 나는야 포켓몬 마스터 이다솜,1620  (0) 2024.08.20
백준,문자열집합,14425  (0) 2024.08.20
백준, 외계인의 기타 연주, 2841  (0) 2024.08.19
백준, 제로, 10773  (0) 2024.08.13
백준, 카드2, 2164  (0) 2024.08.12