개발 연습장/백준 문제풀이

[파이썬, Python] 백준 1874: 스택 수열

LooanCheong 2023. 3. 9. 12:59
반응형

문제

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

코드

import sys
input = sys.stdin.readline

n= int(input())
stack = []
ans = []
check = 0
cur_num = 1

for _ in range(n):
    num = int(input())
    while cur_num <= num:
        stack.append(cur_num)
        ans.append("+")
        cur_num += 1
    if stack[-1] == num:
        stack.pop()
        ans.append("-")
    else:
        print("NO")
        check = 1
        break

if check == 0:
    for i in ans:
        print(i)

설명

수를 쌓아둘 stack과 답을 넣을 ans 리스트를 따로 만들어준다.

n의 횟수만큼 수를 입력하는데,
만약 cur_num이 입력한 수보다 작다면 stack에 수들을 넣어주고, 
ans에는 +를 넣어준다.

만약 stack의 마지막 수가 입력한 수와 같다면 stack에서 빼주고,
ans에는 -를 넣어준다.

만약 두 경우에 모두 해당되지 않는다면, 완성할 수 없으므로
NO를 출력해 준다.

반복문을 다 통과했을 경우 답을 출력한다.

반응형