Posts [알고리즘] 백준 5430 - AC
Post
Cancel

[알고리즘] 백준 5430 - AC


문제

5430 - AC


접근

문제 자체보다 입출력 처리가 더 까다로웠다..

문제는 거꾸로 뒤집는다고 진짜로 배열을 뒤집고 있으면 안된다.
아마 100% 시간초과가 뜰 것이다.
D일 때 앞에서만 뺀다고 했다.
거꾸로 뒤집는다는 것은 뒤에서 빼겠다는 말과 동일하다.
결국 덱으로 구성해주고 R의 횟수에 따라 앞에서 뺄지 뒤에서 뺄지를 정해주면 된다.
다 수행한 후에 R의 횟수를 통해 최종적으로 1번만 뒤집을지 말지 결정한다.


코드

  • 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from collections import deque
def conductCommand(arr, command):
    q = deque(arr)
    idx = 0
    for c in command:
        if c == 'R':
            idx = (idx+1) % 2
        elif c == 'D':
            if len(q) == 0:
                return 'error'
            if idx == 0:
                q.popleft()
            else:
                q.pop()

    if idx:
        q.reverse()
    q = list(map(str, q))    
    return'['+','.join(q)+']'

t = int(input())

for _ in range(t):
    command = list('.'.join(input().split()))
    n = int(input())
    arr = input().split()[0]
    arr = arr[1:-1]
    if len(arr) == 0:
        arr = []
    else:
        arr = list(map(int, arr.split(',')))
    print(conductCommand(arr, command))


This post is licensed under CC BY 4.0 by the author.