프로그래머스 - 탑

Poco ·2020년 5월 18일
0
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문 안에서 ) 계산했어야 했다.

profile
안녕하세요. 개발자와 마케터 경험을 가지고 PM으로 일하는 김선욱(aka 포코) 입니다. 제품 개선, 애드 테크, 광고 수익 최적화에 관심이 많습니다. velog에는 일하면서 얻은 인사이트를 기록하고 있습니다.

0개의 댓글