[프로그래머스] 택배상자 / JavaScript / Level 2

KimYoungWoong·2022년 12월 3일
1

Programmers

목록 보기
34/60
post-thumbnail

🚩문제 주소


📄풀이

스택

반복문 => 컨베이어 벨트
stack => 보조 컨베이어 벨트
idx => 주어진 택배상자 번호

주어진 상자와 컨베이어 벨트 위의 상자와 같지 않다면 보조 컨베이어 벨트로 push 합니다.
같다면 택배상자 번호를 증가시키고 정답을 1 증가시킵니다.

보조 컨베이어 벨트 위의 상자가 1개 이상 있고 마지막으로 넣은 상자와 주어진 상자가 같다면 계속 반복

  • 보조 컨베이어 벨트에서 상자를 제거하고 택배상자 번호를 증가시키고 정답을 1 증가시킵니다.

반복이 종료되고 나오면 정답을 반환합니다.



👨‍💻코드

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

  for (let i = 1; i <= order.length; i++) {
    if (order[idx] !== i) {
      stack.push(i);
    } else {
      idx++;
      answer++;
    }

    while (stack.length !== 0 && stack.at(-1) === order[idx]) {
      stack.pop();
      idx++;
      answer++;
    }
  }

  return answer;
}

profile
블로그 이전했습니다!! https://highero.tistory.com

0개의 댓글