[JS][프로그래머스 -LEVEL 2 - 뒤에 있는 큰 수 찾기]

정대만·2023년 7월 6일

코딩테스트

목록 보기
17/51
post-thumbnail


제한사항이 백만이기 때문에 for문을 한번만 쓰는 방법으로 사용해야된다.

풀이

function solution(numbers) {
    var hye=[[numbers[0],0]];
 
    var return_ar=Array.from({length:numbers.length},()=>-1);
    //처음부터[값: index ] 으로 넣기 
    for(var i=1; i<numbers.length; i++){
         while(hye.length>0&&hye[hye.length-1][0]<numbers[i]){
              var hey= hye.pop();
             return_ar[hey[1]]= numbers[i];
         }
        hye.push([numbers[i],i]);
    }
   return (return_ar)

}
  • 들어오는 수가 더이상 없는 경우 , 배열에 남아있는것들은 더큰수가 없다는 의미 이기 때문에 그수에 해당하는 인덱스에다가 -1 을 하는것이 복잡하다고 생각이 들어 처음부터 배열을 만들때 -1 을 주었다.
  • while 문을 돌면서 현재 배열에 들어있는 수가 for 문으로 들어오는 수 보다작은 것들을 다 빼버린다고 생각하면된다.

처음에는 좀 해맸는데 금방 풀었다.

profile
안녕하세요

0개의 댓글