문제출처
https://school.programmers.co.kr/learn/courses/30/lessons/154539
정수로 이루어진 배열 numbers가 있습니다. 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
정수 배열 numbers가 매개변수로 주어질 때, 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return 하도록 solution 함수를 완성해주세요. 단, 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
- 4 ≤ numbers의 길이 ≤ 1,000,000
- 1 ≤ numbers[i] ≤ 1,000,000
function solution(numbers) {
var answer = new Array(numbers.length).fill(-1);
var 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;
}
스택에 대해 개념은 잘 알고 있다고 생각했는데 정작 문제에 적용해서 풀려고 하니 어떻게 접근해야 될 지 모르겠어서 다른 사람 코드를 보고 문제풀이를 리뷰했다. 문제를 푸는 구현 능력도 부족하다는 것을 느꼈다.