풀이 과정
- 8 4 3 6 8 7 5 2 1 일 때 맨 앞 자리 숫자가 입력될 숫자의 개수이다.
- 🚨 맨 위에 있는 숫자와 원하는 수열의 숫자가 일치할 때도 일단 추가하고. 삭제한다 그래서 + 는 꼭 추가되어야 한다.
- 오름차순으로 스택에 숫자가 push 되기 때문에 push 되는 숫자를 num 으로 설정하고 1 부터 while 문을 통해 추가한다.
- 가장 최근에 추가된 숫자가 원하는 수열의 숫자와 같으면 pop 한다 (append 를 한 다음에)
풀이 코드
import sys
from collections import deque
stack = []
result = []
n = int(sys.stdin.readline().strip())
num = 1
for i in range(n) :
value = int(sys.stdin.readline().strip())
while (num <= value) :
stack.append(num)
result.append("+")
num += 1
if stack[-1] == value :
stack.pop()
result.append("-")
else:
result.clear()
result.append('NO')
break
for k in result :
print(k)
'Algorithm 뽀개기' 카테고리의 다른 글
[백준] 10820 문자열 분석 (Python) (1) | 2024.07.03 |
---|---|
[백준] 17298 오큰수 (Python) (0) | 2024.07.01 |
[Programmers] Lv.2 다음 큰 숫자 (JavaScript) (3) | 2024.05.03 |
[Programmers] Lv.1 시저 암호 (JavaScript) (0) | 2024.05.03 |
[프로그래머스] 자릿수 더하기 (JavaScript) (0) | 2024.03.27 |