[프로그래머스, 131704] 택배상자 (java)
Problem Solving/Programmers

[프로그래머스, 131704] 택배상자 (java)

728x90

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

728x90

 

메모리: 79.4 MB, 시간: 1.45 ms

사용 알고리즘: 자료구조, 스택

import java.util.*;

class Solution {
    public int solution(int[] order) {
        int answer = 0;
        
        int pointer = 1; // 컨테이너 벨트의 가장 앞에 있는 택배 번호
        
        Deque<Integer> deq = new ArrayDeque<>(); // 보조 컨테이너 벨트
        
        for(int i = 0; i < order.length; i++) {
            
            // 컨테이너 벨트에 남아있는 택배 중 하나를 실어야 하는 경우
            while(order[i] > pointer) {
                deq.addFirst(pointer++);
            }
            
            // 컨테이너 벨트의 가장 앞에 있는 택배를 실을 차례
            if(order[i] == pointer) {
                answer++;
                pointer++;
            }
            // 보조 컨테이너 벨트의 가장 앞에 있는 택배를 실을 차례
            else if(!deq.isEmpty() && order[i] == deq.peek()) {
                deq.poll();
                answer++;
            }
            else break;
        }
        
        return answer;
    }
}
728x90