프로그래머스 #JavaScript - 탑

SSO·2020년 1월 13일
0

프로그래머스 Lv2

목록 보기
1/46

문제

https://programmers.co.kr/learn/courses/30/lessons/42588

풀이


function solution(heights) {
     var answer = [];
    var length = heights.length;
    var getTopIndex = 0;
  
    for(var i =length-1; i>0; i--){
      var compare = heights[i];
      var subArr = heights.slice(0,i);
      var getTop = subArr.reverse().find(num => num > compare);

      if(getTop !== undefined){
      // getTopIndex = heights.indexOf(getTop)+1;
      // 그냥 indexOf 쓰면 같은 숫자가 있을 때 문제가 된다...-> 가장 첫번째 index리턴하니까
        subArr.reverse().map((num, i)=>{
          if(num ===getTop){
            getTopIndex = i+1;
          }
        });     
      }else{
        getTopIndex = 0;
      }
      answer.unshift(getTopIndex);   
    }
  
    answer.unshift(0);
    return answer;
}

더 생각해보기

  1. reverse()의 성격 -> 배열 자체를 바꾸어버림
  2. 뒤집어서 해결하려고 했는데 실패 -> index를 뒤집어서 다시 계산하기 어려워서 포기
  3. 알고리즘 sudo코드로 정리 -> 적합한 method찾기 -> 해결의 과정이 제대로 안되고 있음ㅠㅠ

참고사항

profile
happy

0개의 댓글