[BOJ/Python] 1874 : 스택 수열

정나영·2023년 11월 1일
0

👉 문제 링크

👉 풀이

처음에는 주어진 수열을 스택을 사용해서 오름차순으로 정렬하라는 뜻인 줄 알았다.
예제를 참고해서 문제를 이해해보자!

주어진 수열은 [4, 3, 6, 8, 7, 5, 2, 1]

먼저 수열의 맨 처음 숫자인 4를 만들기 위해서는,
빈 배열 (stk)에 1부터 4까지 넣는다.
stk 에 4가 있으므로 4를 뺀다.

그 다음 숫자인 3도 있으므로 3을 뺀다.

다음 숫자인 6을 만들어 보자.
stk 배열에 5와 6을 넣는다.
6이 stk 안에 있으므로 6을 뺀다.

이런 식으로 수열을 만들어가면 된다!

👉 전체 코드

import sys
input = sys.stdin.readline

stk = [] # 숫자를 넣어 줄 빈 배열
ans = []

n = int(input())

cnt = 1 
find = True 

for _ in range(n):
    tmp = int(input())

	# 수열의 숫자까지 배열에 넣기
    while cnt <= tmp: 
        stk.append(cnt)
        cnt += 1
        ans.append('+')
    
    if stk[-1] == tmp:
        stk.pop()
        ans.append('-')
    
    else:
        find = False

if find:
    for i in ans:
        print(i)
else:
    print("NO")

0개의 댓글