카테고리 없음

[백준/python] 1874번 : 스택 수열

junju404 2024. 2. 11. 23: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

 

<문제 접근>

스택. 기본적인 자료구조로, LIFO 특성을 갖는다.

1부터 n까지의 수를 스택에 넣었다가, 하나의 수열을 만들 수 있다. 이 때 push 순서는 반드시 오름차순을 지켜준다.

 

<코드>

count = 1
ans = []    # '+', '-'를 담을 배열
li = []     # 숫자들을 담을 배열
flag = True

n = int(input())

for i in range(n):
    num = int(input())

    while (num >= count):
        li.append(count)
        ans.append('+')
        count += 1
    if li[-1] == num:
        li.pop()
        ans.append('-')
    else:
        flag = False
        break

if flag == False:
    print("NO")
else:
    for i in ans:
        print(i)