난이도 : 실버 3
백준 문제
코드 알고리즘
import sys
n = int(sys.stdin.readline()) #수열의 개수
a=[] # 입력받는 수열을 a로 정의
b=[] # 스택을 b로 정의
for _ in range(n):
a.append(int(sys.stdin.readline())) #수열 a 입력 받기
num = 1
result = '' #result 출력할 push, pop 연산 기호 모음
for i in range(n):
if num<=a[i]:
while num<=a[i]: #a 수열 원소 값과 동일해질때까지 스택에 num 입력
b.append(num)
result += '+\n'
num+=1
b.pop() #같아지는 마지막 스택을 출력
result += '-\n'
continue
else:
top = b.pop()
if top >a[i]: #스택으로 수열을 구현 못할 경우
print('NO')
result=False
break
else :
result += '-\n'
if result:
print(result) #result=True일경우 출력
후기
처음에 문제의 요지를 파악해내는데 가장 오래걸렸던 문제
스택으로 수열을 구현하는데 제한이 없을 줄 알았는데
선형 구조이기 때문에 순서 상관없이 원소 선택이 어려워 매우 제한이 많다!!
제한이 많기 때문에 입력받을 수 있는 수열에 상당한 제한이 있는편!
문제 설정이 제한되어 있음