프로그래머스 - 택배 상자

‍bng4535·2023년 2월 22일
1
post-thumbnail

문제

풀이

  • 스택을 활용한다. 배달하는 순서에 맞는 상자 번호가 나올 때까지 스택에 삽입하고 배달하는 순서에 맞는 상자가 스택의 top과 일치한다면 pop을 하면서 +1
  • 위 과정을 반복하되 배달 순서와 top이 더이상 일치하지 않으며 스택에 추가할 상자 번호가 없다면 반복문을 탈출한다.

유의할 점

  • 탈출 조건을 생각하는데 시간이 꽤 소모되었다.

코드

import java.util.*; 

class Solution {
    public int solution(int[] order) {
        Stack<Integer> s = new Stack<>(); 
        int answer = 0;
        int orderIdx = 0;
        int currBox = 1;
        boolean flag =true; 
        while(true){
            while(s.isEmpty() || s.peek() != order[orderIdx]) {
                if(currBox >order.length) {
                    flag = false; 
                    break;
                }
                s.push(currBox++);
            }
            while (!s.isEmpty() &&  s.peek() == order[orderIdx]){
                answer++; 
                s.pop(); 
                orderIdx++; 
            }
            if(!flag || orderIdx == order.length) return answer;  
            // if(orderIdx == order.length) break; 
            // if(currBox == order.length) break; 
        }
        
    }
}
profile
공부 기록

0개의 댓글

관련 채용 정보