algorithm

알고리즘 기초 1/2 200-자료구조: 스택 수열

park혀니 2025. 3. 26. 16:42

스택 수열(python 1874)

상당히 헤메었던 문제.
스택과 결과를 저장할 리스트를 선언해주고
입력한 수를 만날 때까지 오름차순으로 PUSH 해줌.
만나면 while문을 탈출하며 스택을 쌓아줌.

그 다음 STACK의 TOP이 입력한 수와 같으면 정답 수열에 넣어주고,
아니라면 주어진 스택을 만들 수가 없으므로 NO를 출력해줌.
(오름차순으로 스택이 입력되어있으므로 TOP이 입력한 값보다 작으면 그 값은 아래에 깔려있다는 뜻)

n = int(input())
stack = []
result = []
flag = 0
cur = 1

for i in range(n):
    l = int(input())
    while cur <= l:
        stack.append(cur)
        result.append("+")
        cur = cur + 1

    if stack[-1] == l:
        stack.pop()
        result.append("-")
    else:
        print("NO")
        flag = 1
        break
if flag == 0:
    for i in result:
        print(i)