728x90
문제 이해하는데 오래걸린 문제.
쉽게 정리하면
1부터 n까지 스택에 push 하며 주어진 수열에 알맞은 순서로 pop을 하면 되는 문제이다.
예시) 43687521
+ (1)
1
+ (2)
12
+ (3)
123
+ (4)
1234
- (4) 4는 (주어진 수열의 맨 처음 값)은 deque(주어진 수열)에서 제거된다.
123
.
.
.
집중이 안 되서 생각 나는데로 풀었다.
Key Point
- 맨처음 입력되는 값은 deque 자료구조를 활용하여 시간 복잡도를 줄였다.
import sys
from collections import deque
input = sys.stdin.readline
queue = deque([])
ex = []
n = int(input())
lists1 = []
printing = []
for i in range(n):
queue.append(int(input())) # 43687521
#queue[0]
num = 1
i = 0
flag = 0
while True:
if len(ex) != 0:
if queue[0] == ex[-1]:
ex.pop()
queue.popleft()
printing.append('-')
flag = 1
if flag != 1 and queue[0] != num:
ex.append(num)
printing.append('+')
flag = 2
elif flag != 1 and queue[0] == num:
queue.popleft()
printing.append('+')
printing.append('-')
flag = 2
if flag != 1:
num+=1
flag = 0
if len(queue) == 0:
break
if len(ex) != 0:
if ex[-1] > n:
print("NO")
exit(0)
for i in printing:
print(i)
728x90
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 2606번 python 풀이 - 첫 DFS 문제 (1) | 2022.12.04 |
---|---|
[백준/BOJ] - 1764번 python 풀이 (0) | 2022.11.29 |
[백준/BOJ] - 18111번 python 풀이 - 브루트포스 알고리즘 (0) | 2022.11.29 |
[백준/BOJ] - 2805번 python 풀이 - 이분탐색(binary search) (0) | 2022.11.27 |
[백준/BOJ] - 1654번 python 풀이 - 이분탐색(binary search) (0) | 2022.11.27 |