[JS][프로그래머스 -LEVEL 2 -택배상자 ]

정대만·2023년 7월 12일

코딩테스트

목록 보기
24/51
post-thumbnail

문제해석

  • 컨테이너 벨트는 순서대로 온다 .
  • 하지만 택배기사는 순서대로 쌓아야된다.
  • 순서대로 오는것을 잠시 모와놓고 다시 쌓을수 있나 확인하는 문제

나만의 해석

여기서 쌓는다는 것에 중심으로 생각하면 --> 순서대로 갈때 이전의 가장 큰수보다 더 큰수가 올때 쌓을수 있다는것을 알수 있다. 따라서 max 값을 업데이트하면서 쌓고
모은 배열값을 pop 할수 있나 없나를 확인하면된다고 생각하였다,

처음에 틀린이유

    if(order[i]>max_order){
            in__(max_order,order[i]);
            max_order=order[i];
            count+=1;
    
        }
        이함수를 이용해서 업데이트를 하는데 
            const in__= function(hey,new_hey){
        for(var i=hey; i<new_hey; i++){
            push__.push(i);
        }
    }
        

이런식으로 가면 이전의 max 가 또 쌓이게 되는 문제점이 발생한다. 따라서
hey+1 으로 쌓아야 된다..!

정답 코드

function solution(order) {
    var answer = 0;
    //첫번째로 넣을거 
    var push__=[];
    var max_order=0;
    var count=0;
    
    const in__= function(hey,new_hey){
        for(var i=hey+1; i<new_hey; i++){
            push__.push(i);
        }
    }
    
  
    for(var i=0; i<order.length; i++){
        if(order[i]>max_order){
            in__(max_order,order[i]);
            max_order=order[i];
            count+=1;
    
        }
        else{
            //작은경우 
            if(push__[push__.length-1]!=order[i]){
                return count;
            }
            else{
                // 같은경우 
                push__.pop();
                count+=1;
                
            }
        }
    }
    
    return (count); 
    
}
solution([3, 2, 1, 4, 5])

profile
안녕하세요

0개의 댓글