https://www.acmicpc.net/problem/5397
커서 문제는 전에도 한번 풀어서 쉽게 풀었다. 한 번 풀어본 거랑 안 풀어본 건 정말 천지차이다.
백준 문제 풀면서 중에 가장 빨리 푼거 같아 나름 뿌듯하구먼.
# PYTHON CODE (1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import sys
from collections import deque
n = int(sys.stdin.readline())
for _ in range(n):
s = str(sys.stdin.readline().rstrip())
stk1 = deque()
stk2 = deque()
for i in s:
if i == '<':
if stk1:
stk2.appendleft(stk1.pop())
elif i == '>':
if stk2:
stk1.append(stk2.popleft())
elif i == '-':
if stk1:
stk1.pop()
else:
stk1.append(i)
print(''.joint(stk1 + stk2))
|
cs |
한 가지 주의할 점은 조건문에 and를 달아서 stk1이 True일 때만 실행하게 작성하면 화살표나 백스페이스가 print 되므로 조건을 나눠주어야 한다는 거다.
deque 모듈은 popleft와 appendleft를 내장 함수를 갖고 있어 속도 측에서 유리할 거라고 판단했는데, 그냥 리스트 메서드를 reverse 한 풀이가 속도가 더 빠르더라.
'백준 > 스택' 카테고리의 다른 글
[Python] 백준, 1918(스택) (0) | 2021.07.29 |
---|---|
[Python] 백준, 17298(스택) (0) | 2021.07.28 |
[Python] 백준, 2493(스택) (0) | 2021.07.27 |
[Python] 백준, 2504(스택) (0) | 2021.07.26 |
[Python] 백준, 1406(스택) (0) | 2021.07.23 |