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 |