function solution(heights) {
var answer = [];
heights.reverse()
while(heights.length !== 0) {
const cur = heights.shift();
// cur보다 큰 input의 첫번째 원소를 찾는다.
const send = heights.find(el => el > cur)
// send가 없는경우에는 0을 넣는다.
if(send === undefined ) answer.push(0)
else {
// send의 원래 배열에서의 순서를 찾는다.
const index = heights.length - heights.findIndex(el => el === send)
answer.push(index)
}
}
return answer.reverse();
}
send의 원래 순서를 찾을때
원래 배열을 copy해두고 copy한 배열에서 send의 위치를 findIndex로 찾는방식으로 구현하려고 했다.
send의 값이 배열에서 여러번 있는경우 문제가 되어, send가 현재 배열에서 몇번째 위치인지를 ( 즉 while문 안에서 ) 계산했어야 했다.