N = int(input())
arr = [int(input()) for _ in range(N)]
stack = []
result = []
idx = 0
for i in range(1,N+1):
stack.append(i)
result.append('+')
while stack and stack[-1] == arr[idx]:
stack.pop()
result.append('-')
idx += 1
if stack:
print('NO')
else:
for i in result:
print(i)
문제에 주어진대로 1부터 차근차근 숫자가 들어온다. 그리고 문제에 주어진 수열을 만드는 것인데,
스택에 들어간 수 중의 끝부분이 주어진 수열과 동일하면 하나씩 pop을 하면서 수열을 맞춰준다.
이 작업을 전부 했는데도, stack에 수가 남아있는것은 주어진 수열을 못 만드는것이기 때문에,
NO를 출력하고,
stack이 다 비어있으면 만든것이기때문에 push pop을 출력해주면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 11779 최소 비용 구하기 2 (0) | 2021.05.19 |
---|---|
[BOJ/백준] 2239 스도쿠 (0) | 2021.05.19 |
[BOJ/백준] 17398 통신망 분할 (0) | 2021.05.18 |
[BOJ/백준] 1103 게임 (0) | 2021.05.18 |
[BOJ/백준] 5875 오타 (0) | 2021.05.17 |