문제
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 |