이 문제는 두 가지 방법으로 풀 수 있었다.
Array가 가지고 있는 메서드 그리고 그를 이용해 stack, queue 등을 만들 수 있음을 알게되었다.
function solution1(heights){
let stack = [];
let answer = [];
for(let i = 0 ; i < heights.length ; ++i){
while(stack.length > 0 && heights[stack[stack.length - 1]] <= heights[i]){
stack.pop();
}
if(stack.length > 0){
answer.push(stack[stack.length - 1] + 1);
} else {
answer.push(0);
}
stack.push(i);
}
return answer;
}
function solution2(heights) {
return heights.map((item, idx) => {
while(idx >= 0){
idx--;
if(heights[idx] > item){
return idx + 1;
}
}
return 0;
});
}