택배상자

이리·2025년 4월 21일
0

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

문제설명

  • 주어진 파라미터: int[] order
  • 반환값: int 실을 수 있는 택배 수
  • 벨트에 놓인 순서대로 꺼낼 수 있음
  • 미리 알려준 순서에 맞게 실어야함
  • 순서 다르면 다른 곳에 보관 가능 → stack 형 보관함

풀이방식

  1. 보관함을 Stack으로 구현
  2. 1부터 Order.length 까지 반복하며 확인
    • 일치할 경우 answer++
    • 일치하지 않을 경우 stack에 넣기
  3. Stack의 Peek와 order[idx]를 비교해서 같은지 확인하기 → answer++

코드

import java.util.*;

class Solution {
    public int solution(int[] order) {
        ArrayDeque<Integer> stack = new ArrayDeque<>();
        int answer = 0;
        int len = order.length;
        int idx = 0;

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

            while (!stack.isEmpty() && stack.peek() == order[idx]) {
                stack.pop();
                answer++;
                idx++;
            }
        }

        return answer;
    }
}![](https://velog.velcdn.com/images/illli_705/post/251b903a-1749-4855-8e5c-06c37608d7b5/image.png)

0개의 댓글