문제풀이/백준

[python/파이썬] 백준 1874 - 스택 수열 (실2)

bbugi 2023. 7. 20. 12:28

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

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net


자료구조 - 스택(stack)

---

수많은 오답의 향연..

python으로 풀었을 때 시간초과 잡는 법 새로 공부하기 (pypy3로 통과 얌시 씀)

그런데 틀렸다고 한 것도 결과값에 NO라고 출력해야 하는걸 대충보고 no라고 써서 그런 것

어쩐지 반례를 아무리 넣어도 vscode에서는 전부 정답으로 나오더라니..


[풀이 과정 - 나중에 python3로도 통과 가능하게 코드 리뷰하기]

from collections import deque
import sys

input = sys.stdin.readline

n = int(input())

num = []
base = deque([])
ans = []
sign = []

for i in range(n):
    base.append(int(input()))
    
i = 1

while True:

    if len(base) == 0 :
        print(*sign, sep='\n')
        break
    
    if len(num) > 0 :
        if base[0] == num[-1] :
            sign.append('-')
            ans.append(num.pop())
            base.popleft()
            continue
        if base[0] in num:
            print('NO')
            break
    
    if i not in num:
        sign.append('+')
        num.append(i)
        i += 1