본문 바로가기
코딩테스트 파이썬/백준

스택 수열

by 세용용용용 2024. 10. 18.

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

 


나의 코드

import sys
input = sys.stdin.readline

from collections import deque
ct = int(input())
queue = deque()
for _ in range(ct):
    queue.append(int(input()))
    
stack = []
result = []
for i in range(1, ct+1):
    stack.append(i)
    result.append('+')
    
    if stack[-1] > queue[0]:
        result = ['NO']
        break
    
    while stack and queue and (stack[-1] == queue[0]):
        result.append('-')
        stack.pop()
        queue.popleft()

if queue:
    result = ['NO']
    
for i in result:
    print(i)

 


시간 복잡도

for _ in range(ct) : queue를 생성 ( 선형 시간 복잡도 )
for i in range(1, ct+1) : 스택을 push 해주며 조건에 맞는 수 스택 과 큐 에서 제거 ( 선형 시간 복잡도 )
for i in result : 최종 결과값을 순회하며 print ( 션형 시간 복잡도 )

해당 알고리즘 시간복잡도는 선형 시간 복잡도 ( O(n) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

잃어버린 괄호  (0) 2024.11.06
DFS와 BFS  (0) 2024.11.06
계단 오르기  (0) 2024.10.30
체스판 다시 칠하기  (0) 2024.10.17
덩치  (1) 2024.10.16