본문 바로가기
Algorithm/Programmers Java

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

by 제우제우 2024. 9. 28.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코딩테스트 연습 > 연습문제 > 택배상자

 

난이도: LEVEL2

 

정답 코드

import java.util.*;
import java.util.stream.*;
class Solution {
    public int solution(int[] order) {
         int answer = 0;
         Stack<Integer> stack = new Stack<>();
         int cur = 1; // 어차피 컨테이너 벨트에는 1 ~ n 순서로 들어있음 
         int cnt = 0;        
         while(cnt < order.length){
             int target = order[cnt++];
             if(cur <= target){
                 while(cur != target){
                     stack.push(cur++);
                 }
                 cur++;
                 answer++;
             }
             else{ // cur > target 이라면 이미 컨테이너 벨트에서 보조 컨테이너 벨트로 이동 상태 
                if(stack.isEmpty() || stack.peek() != target) break;
                else{
                    answer++;
                    stack.pop();
                } 
             }
         }
         return answer;
    }
}