■ 문제해결
처음 문제를 읽어보면서 풀이를 진행하는데 이해하기가 어려웠고, 구글링을 통해 해답을 보며 이해하였다.
stack에 값이
---
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
---
다음과 같이 push되게 된다. 다음 과정에서 data 즉 입력 받는 값이 stack 의 최상단의 값인 '4'와 같게 된다면 pop 시키고 '-' 값을 ans에 push하며 풀이된다.
문제를 이해하는데 어려움이 있었지만 push, pop을 이용한 간단한 알고리즘 문제였다.
■ 문제해답
import sys
input = sys.stdin.readline
n = int(input())
stack = []
ans = []
count = 1
result = True
for i in range(n):
data = int(input())
while count <= data:
stack.append(count)
ans.append('+')
count += 1
if stack[-1] == data:
stack.pop()
ans.append('-')
else:
result = False
if result:
print('\n'.join(ans))
else:
print("NO")
■ 문제출처
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
'Algoritm > BOJ' 카테고리의 다른 글
[BOJ] 10845번: 큐 (0) | 2022.09.06 |
---|---|
[BOJ] 1406번: 에디터 (0) | 2022.09.06 |
[BOJ] 9012번: 괄호 (0) | 2022.09.06 |
[BOJ] 9093번: 단어 뒤집기 (0) | 2022.09.06 |
[BOJ] 10828번: 스택 (0) | 2022.09.06 |