정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다. 정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
def solution(numbers):
answer = []
numbers.reverse()
for i in range(len(numbers)):
if i == 0 : addNum = (-1, 0)
elif numbers[i] < numbers[i-1] : addNum = (numbers[i-1], i-1)
elif numbers[i] > numbers[i-1] :
chkIndex = i-1
while True:
chkValue = answer[chkIndex][0]
if chkValue == -1:
addNum = (-1, 0)
break
elif numbers[i] < chkValue :
addNum = (chkValue, answer[chkIndex][1])
break
else: chkIndex = answer[chkIndex][1]
answer.append(addNum)
answer.reverse()
return [x[0] for x in answer]
def solution(numbers):
stack = []
result = [-1] * len(numbers)
for i in range(len(numbers)):
while stack and numbers[stack[-1]] < numbers[i]:
result[stack.pop()] = numbers[i]
stack.append(i)
return result