알고리즘/백준

[백준 / python] 1874번 스택 수열 | 초코더

cloud_nice 2020. 1. 30. 14:41

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

 

나의 풀이

num_list = []
ans = []
count = 1
possibility = True
for i in range(int(input())):
    num = int(input())
    while count <= num:             # count와 num이 같은수를 찾는다.
        num_list.append(count)      # 그전까진 1부터 count까지 num_list에 저장한다.
        ans.append('+')      # 저장과 동시에 push라는 말이므로 +를 추가해준다
        count += 1
    if num_list[-1] == num:
        num_list.pop()              # num과 num_list의 마지막 값이 같다면 pop해준다.
        ans.append('-')      # pop를 했으니 -를 추가한다.
    else:
        possibility = False         # num과 num_list의 마지막 값이 다르다면 수열이 성립하지않는다.

if possibility == False:
    print('NO')
else:
    for j in ans:
        print(j)