https://school.programmers.co.kr/learn/courses/30/lessons/154539
정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
def solution(numbers):
answer = [-1 for _ in range(len(numbers))]
# stack
numbers.reverse()
stack = [] # 사용하지 않은 값
for i in range(len(numbers)):
now = numbers[i]
# stack이 있는데 만약 값이 현재 값보다 크지 않다면 빼준다.
while len(stack) and stack[-1] <= now :
stack.pop()
# 위에서 현재보다 작은 값들을 제거함, 남은 값은 큰갑들
# stack의 마지막 값이 가장 가까운 큰 값
if len(stack) : answer[i] = stack[-1]
stack.append(now) # stack에 추가
answer.reverse()
return answer