🌞Algorithm/🔥programmers

[programmers] 택배상자

뿌야._. 2026. 5. 21. 12:00
문제
https://school.programmers.co.kr/learn/courses/30/lessons/131704
 

프로그래머스

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

programmers.co.kr

 


< 택배상자 >

 

문제 풀이 (Java)

import java.util.*;

class Solution {
	public int solution(int[] order) {
		int answer = 0;

		Stack<Integer> stack = new Stack<>();

		int idx = 1;
		for (int i = 0; i < order.length; i++) {
			if (order[i] == idx) {
				idx += 1;
				answer += 1;
			} else if (!stack.isEmpty() && stack.peek() == order[i]) {
				stack.pop();
				answer += 1;
			} else {
				while (idx <= order.length && idx != order[i]) {
					stack.add(idx++);
				}
				if (idx == order[i]) {
					idx += 1;
					answer += 1;
				} else {
					break;
				}
			}
		}
		return answer;
	}
}

 

택배 상자를 보관하기 위해 Stack을 선언한다. order을 살펴보며 컨테이너 벨트에 놓인 택배 번호와 같다면 다음 값을 살펴본다. 번호가 같지 않다면 stack에 있는 번호와 비교한다. 같으면 stack에서 pop한 후 다음 값을 살펴보고 같지 않다면 번호가 같아질 때까지 stack에 택배 번호를 저장한다. 번호가 같아지면 다음으로 넘기고 모든 조건에 해당하지 않는다면 더 이상의 상자를 실을 수 없는 것이므로 종료한다.

 

최종 answer을 반환한다.



 

출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges

'🌞Algorithm > 🔥programmers' 카테고리의 다른 글

[programmers] 바탕화면 정리  (0) 2026.05.26
[programmers] 호텔 대실  (0) 2026.05.22
[programmers] 옹알이 (2)  (0) 2026.05.20
[programmers] 카펫  (0) 2026.05.19
[programmers] 멀리 뛰기  (0) 2026.05.18