스택
스택이 비었다면 numbers의 인덱스를 넣어줍니다.
스택에 원소가 하나라도 있고, numbers[스택의 끝 원소인 인덱스]가 현재 탐색한 numbers의 원소보다 작다면, answer[stack에서 pop한 인덱스]를 현재 탐색한 numbers의 원소로 바꿔줍니다.
이 조건이 만족할 경우 계속 반복해줍니다.
function solution(numbers) {
const answer = Array(numbers.length).fill(-1);
const stack = [];
for (let i = 0; i < numbers.length; i++) {
while (stack && numbers[stack.at(-1)] < numbers[i]) {
answer[stack.pop()] = numbers[i];
}
stack.push(i);
}
return answer;
}