function solution(numbers) {
const results = Array(numbers.length).fill(-1);
const stack = [];
for (let i = 0; i < numbers.length; i++) {
while (stack.length !== 0 && numbers[i] > numbers[stack.at(-1)]) {
results[stack.pop()] = numbers[i];
}
stack.push(i);
};
return results;
}
Stack을 이용한 풀이입니다. 문제를 해결하는 아이디어는 다음과 같습니다.
- -1로 초기화 된 배열을 만들어줍니다.
- numbers를 순회하면서 각 index를 stack에 push 해줍니다.
- 만약의 stack의 마지막 값 인덱스를 가진 numbers의 값이 현재 값보다 작을 경우 pop을 해주고 현재 값으로 바꿔줍니다.
참고해서 해결한 풀이인데 아이디어를 다른 문제에도 적용할 수 있을 것 같다라는 생각이 듭니다.