본문 바로가기
algorithm/coding test

프로그래머스 - 뒤에있는큰수찾기(파이썬)

by su0a 2024. 4. 14.

스택을 사용하여 풀었다.(stack=[])

배열을 뒤에서부터 돌면서 stack 안에 배열의 i번째 값보다 큰값이 있을 때까지 pop을 해주었고 그 후에 i번째 값을 스택에 추가시켰다. 

-> 따라서 스택에는 i번째 값부터 오름차순으로 정렬되어있다.

 

def solution(numbers):
    answer = []
    stack=[]
    for i in range(len(numbers)-1,-1,-1):
        while stack and stack[-1]<=numbers[i]:
            stack.pop()
            
        if stack and stack[-1]>numbers[i]:
            answer.append(stack[-1])
        else:
            answer.append(-1)
        stack.append(numbers[i])
        
    answer.reverse()
    return answer