[프로그래머스 LV2] 택배상자

@bbearcookie · April 07, 2023 · 1 min read

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131704

아이디어

i1부터 order의 길이까지 증가시키면서 보조 컨테이너의 역할을 하는 stack에 숫자를 넣고,
스택에서 꺼내야 하는 다음 상자를 꺼낼 수 있다면 꺼내고 결과를 카운팅한다.

소스코드

function solution(order) {
  let answer = 0;
  let cursor = 0;
  const stack = [];

  function isCursorInBoundary() {
    return cursor < order.length;
  }

  function isStackNotEmpty() {
    return stack.length > 0;
  }

  function isAbleToPopNextValue() {
    return order[cursor] === stack[stack.length - 1];
  }

  for (let i = 1; i <= order.length; i++) {
    stack.push(i);

    while (isCursorInBoundary() && isStackNotEmpty() && isAbleToPopNextValue()) {
      stack.pop();
      cursor++;
      answer++;
    }
  }

  return answer;
}
@bbearcookie
Frontend Developer