정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
def solution(numbers):
# numbers의 개수만큼 초기값 설정
answer = [-1] * len(numbers)
#빈 스택
stack = []
for i in range(len(numbers)):
while stack and numbers[stack[-1]] < numbers[i]:
answer[stack.pop()] = numbers[i]
stack.append(i)
return answer
처음에는 이중 for문으로 다가갔지만 시간복잡도가 O**2이다보니 시간초과가 떴다...
그러다보니 stack을 이용해서 풀어야 되는 문제다.텍스트