본문 바로가기
Beakjoon&프로그래머스/Java

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

by 현장 2026. 4. 2.

-Code

import java.util.*;

class Solution {
    public int solution(int[] order) {
        Deque<Integer> deq = new ArrayDeque<>();
        int answer = 0, idx = 0;;
        for (int num = 1; num <= order.length; num++) {
            // 현재 택배 넣기
            deq.addLast(num);
            // 현재 order와 같으면 빼기
            // 컨테이너가 비어있지 않고 order가 범위안이고 
            // 마지막 박스와 오더가 같은 경우 값 증가 및 꺼내기
            while (!deq.isEmpty() && idx <= order.length && 
                   deq.peekLast() == order[idx]) {
                deq.pollLast();
                idx++;
                answer++;
            }
        }
        
        return answer;
    }
}

한 박스가 컨테이너에 들어오고 order에 따라 가능하면 계속 빼줘야 하는데 로직을 이상하게 설계해 무한 루프 거나 하나씩 검사하고 끝내서 빼고 난 뒤 박스 검사를 못 해서 틀렸습니다.

그래서 한번 상자를 넣을때 while문으로 최대한 확인해 봐라 라는 힌트를 보고 해결했습니다.