BOJ 5430 - AC

folder_open Algorithm / BOJ / gold | date_range / created at

sell #BOJ #5430 #gold #python #파이썬 #코딩테스트 #알고리즘

문제 링크

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

잡담

골드 문제 치고는 살짝 쉬운 것 같다.

구현

연산에는 두 가지가 있다. R(뒤집기), D(버리기)이다. 첫 번째 수를 버린다고 하니, popleft를 생각해서 양 끝의 데이터를 pop할 수 있는 덱이 적합하다고 생각했다. 처음에는 단순하게 배열 자체를 reverse시켰는데, 시간초과가 나서 생각해보니 flag만 지정해서 flag에 따라 어디서 pop할 건지 정해주면 되는 문제였다.

코드

from sys import stdin
from collections import deque
input = lambda : stdin.readline().strip()


def main():
    t = int(input())
    for _ in range(t):
        p = input()
        n = int(input())
        arr = deque(eval(input()))

        try:
            reverseFlag = False
            for cmd in p:
                    if cmd == 'R':
                        reverseFlag = not reverseFlag
                    else:
                        if reverseFlag:
                            arr.pop()
                        else:
                            arr.popleft()
            print('[', end='')
            if not arr:
                print(']')
            else:
                if reverseFlag:
                    Range = range(len(arr) - 1, 0, -1)
                    last = 0
                else:
                    Range = range(len(arr) - 1)
                    last = -1
                for i in Range:
                    print(arr[i], end=',')
                print(f'{arr[last]}]')
        except IndexError:
            print('error')


if __name__ == '__main__':
    main()