백준 5430번 - AC

Posted by qwlake on July 20, 2020

5430 - AC

1. 개요

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

2. 코드

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
33
34
import sys

T = int(sys.stdin.readline().strip())
for _ in range(T):
    p = sys.stdin.readline().strip()
    n = int(sys.stdin.readline().strip())
    x = sys.stdin.readline().strip()[1:-1]
    if x:
        x = x.split(',')
    else:
        x = []

    reverse = False
    error = False
    for single_p in p:
        if single_p == 'R':
            reverse = not reverse
        elif single_p == 'D':
            if len(x) == 0:
                error = True
                break
            elif reverse:
                x.pop()
            else:
                x.pop(0)
    if error:
        print('error')
    else:
        if reverse:
            ret = ','.join(x[::-1])
            print(f'[{ret}]')
        else:
            ret = ','.join(x)
            print(f'[{ret}]')

3. 설명

  1. 숫자를 앞에서 뺄건지, 뒤에서 뺄건지 정하는 플래그 변수 reverse를 사용한다.
  2. R이 나오면 reverse의 값을 토글시킨다.
  3. D가 나왔을땐
    1. reverseFalse이면 앞에서 숫자를 뺀다.
    2. reverseTrue이면 뒤에서 숫자를 뺀다.
  4. 출력

4. 여정

  1. 출력 형식을 따르지 않아 실패
  2. 성공

5. 결과

image