본문 바로가기
알고리즘

[프로그래머스] 택배상자, 자바

by 순원이 2024. 4. 15.

문제         

 

프로그래머스

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

programmers.co.kr

1 번째 시도   

문제가 장황해서 어려워 보일 수 있지만, 택배상자의 우선순위 배열을 만들고 우선순위 배열을 탐색하다 부합하는 숫자가 있으면 count하고 없으면 stack에 보관하는 문제이다.

import java.util.*;

class Solution {
    public int solution(int[] order) {
      
        int present = 0;
        int result = 0;
        Stack<Integer> stack = new Stack<>();
        int[] priorty = new int[order.length];
        
        for(int i =0; i < priorty.length; i++) {
            priorty[order[i]-1] = i; 
        }
        for(int p : priorty) {
            if(p == present) {
                result++;
                present++;
            }
            else {       
                stack.push(p);
            }
            while(!stack.isEmpty() && stack.peek() == present) {
                stack.pop();
                result++;
                present++;
            } 
        }
        
        return result;
    }
}