프로그래머스 Lv.2 택배상자

Kim Jason·2023년 4월 4일
0

알고리즘 노트

목록 보기
33/35
post-thumbnail

💁🏻 코드

function solution(order) {
    // ✅ order 배열의 현재 인덱스 정보를 갖는 변수를 추가로 선언한다
    let curIndex = 0;
    let stack = [];    
    
    for (let i = 1; i <= order.length; i++) {
        stack.push(i);
        while (stack.length > 0 && order[curIndex] === stack.at(-1)) {
          curIndex++;
          stack.pop();
        }
    }
    return curIndex;
}

입력값의 제한은 다음과 같습니다.

  • 1 <= 배열 order의 길이 <= 1,000,000

일단 주어진 order 배열에 대해서 이중 for문을 돌리는 건 무리가 있겠다고 생각했습니다.

보조 컨테이너에 잠시 물건을 두고 조건이 만족하면 꺼낸다는 점에서 스택을 사용해야겠다는 생각이 들었습니다.
스택을 사용하는 점에서 Lv.2 뒤에있는큰수찾기 문제와 비슷함을 느꼈습니다.
핵심은 1부터 5까지 for문을 돌려 해당하는 변수를 stack 배열에 넣는 것입니다.
1부터 5까지 반복문을 돌리는 이유는 박스들이 컨테이너 위에 1부터 5까지 순서대로 놓여있는 상태로 시작하기 때문입니다.

profile
성장지향형 프론트엔드 개발자

0개의 댓글