본문 바로가기
Problem Solving

[Stack] 내림차순 수열

by Bokoo14 2022. 12. 13.
N개의 양의 정수를 원소로 가진 수열 A가 주어졌을 때, A의 원소로 내림차순 수열을 만들고자 한다.
내림차순 수열은 A에서 가장 큰 원소에서 순차적으로 더 작은 값들로 구성된 수열을 말한다.
예를 들어, N=6, A=[6, 9, 7, 6, 4, 6]일 때 A의 내림차순 수열은 다음과 같다.
9 7 6
수열 A가 주어졌을 때, A의 내림차순 수열을 출력하시오.

Hint: 스택을 이용하여 더 작거나 같은 값들은 모두 pop()한 후에 push()를 하는 전략을 사용할 수 있다.
Input
첫째 줄에 원소의 개수 N이 주어진다.
1 <= N <= 10,000
둘째 줄에 N개의 양의 정수가 주어진다.
정수는 1보다 크거나 같고, 10,000보다 작거나 같다.
6
6 9 7 6 4 6

9
9 8 7 6 5 4 3 2 1

9
1 4 3 3 2 1 2 1 2
Output
첫째 줄에 내림차순 수열을 출력한다.
9 7 6

9 8 7 6 5 4 3 2 1

4 3 2
import sys
input = sys.stdin.readline

n = int(input())
array = list(map(int,input().split()))

def sol(array):
    stack = []
    while len(array):
        cur = array.pop(0)
        # 더 작거나 같은 값들은 모두 pop
        while len(stack) and stack[-1]<=cur:
            stack.pop()
        stack.append(cur)

    return stack

answer = sol(array)
print(*answer)

 

'Problem Solving' 카테고리의 다른 글

[Hash Table] 과일가게: 가장 많이 팔린 과일  (0) 2022.12.13
[Queue] 카드 버리기  (0) 2022.12.13
[Stack] 괄호의 완성  (0) 2022.12.13
[Queue] 요세푸스의 선물  (0) 2022.12.13
[Stack] 주차 관리인  (0) 2022.12.13