알고리즘
1부터 n까지 순회하면서 입력 값과 일치하는경우 push, 일치하지 않는 경우 pop을 실행하고 실행 연산의 결과를 배열에 저장한다.
소스코드
# 스택 수열
import sys
n = int(sys.stdin.readline())
arr = [int(sys.stdin.readline()) for _ in range(n)]
idx = 0
stack1 = []
stack2 = []
cal = []
for i in range(1, n+1):
stack1.append(i)
cal.append('+')
while stack1 and stack1[-1] == arr[idx]:
stack2.append(stack1.pop())
cal.append('-')
idx += 1
if stack2 == arr:
for i in cal:
print(i)
else:
print("NO")
'백준 문제 풀이' 카테고리의 다른 글
[백준] 10997 "별찍기 - 22" 재귀 -python (1) | 2024.01.03 |
---|---|
[백준] 1182 "부분수열의 합" 백트래킹 -python (2) | 2024.01.02 |
[백준] 11054 "가장 긴 증가하는 부분 수열" -python (1) | 2024.01.02 |
[백준] 9663 "N-Queen" -python (1) | 2023.12.29 |
[백준] 15651 "N과 M (3)" -python (0) | 2023.12.29 |