프로그래머스 택배상자 JavaScript

2022년 12월 31일

프로그래머스 택배상자

제한사항

  • 1 ≤ order의 길이 ≤ 1,000,000
  • order는 1이상 order의 길이 이하의 모든 정수가 한번씩 등장합니다.
  • order[i]는 기존의 컨테이너 벨트에 order[i]번째 상자를 i+1번째로 트럭에 실어야 함을 의미합니다.

문제 풀이

현재 order의 값과 컨테이너 벨트에 상자 값을 비교해 같으면 바로 트럭에 싣는다.
order의 값이 컨테이너 벨트에 상자 값보다 클 때는 order 값 보다 작은 컨테이너 상자들을 다 서브 컨테이너 벨트에 넣어두고 order 값의 상자를 트럭에 싣는다.
order의 값이 컨테이너 벨트에 상자 값 보다 작을 경우에는 서브 컨테이너 벨트의 맨 오른쪽 값과 비교해 같으면 서브 컨테이너 벨트에서 빼 트럭에 싣는다.
다른 경우 종료

solution.js
function solution(order) {
    let answer = 0;
    const subBelt = new Array();
    let idx = 1;

    for (let i = 0; i < order.length; i++) {
        if (order[i] == idx) {
            idx++;
            answer++;
        }
        else if (order[i] > idx) {
            for (let j = idx;j < order[i]; j++) {
                subBelt.push(j);
            }
            idx = order[i]+1;
            answer++;
        }
        else {
            if (subBelt.pop() === order[i]) {
                answer++;
            }
            else break;
        }
    }
    return answer;
}

댓글