728x90
코딩테스트 연습 - 택배상자
알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려
school.programmers.co.kr
#고려해야 하는 상황
메인 컨테이너 == 트럭 인 경우
아니면 보조 top == 트럭 인 경우 pop
아니면 메인을 보조 컨테이너로 push
=> 다 막히면 종료
import java.util.*;
class Solution {
public int solution(int[] order) {
int answer = 0;
int l = order.length;
int i = 0; // order에서 원하는 상자 위치
int container = 1; // 컨테이너의 상자 번호
Stack<Integer> sub = new Stack<>();
while(i < l){
// 메인 컨테이너에서 꺼낼 수 있는 경우
if(container == order[i]){
container++;
answer++;
i++;
}
else if(!sub.isEmpty() && sub.peek() == order[i]){
// 보조 컨테이너 top이 트럭 상자인 경우
answer++;
i++;
sub.pop();
}
else if(container <= l){
// 메인 컨테이너에 남아있는 경우
// 컨테이너에서 보조 컨테이너로 옮기는 경우
sub.push(container);
container++;
}
else{
// 다 꺼낼 수 없는 경우
break;
}
}
return answer;
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 가장 큰 수 : Java / Collections.sort(list, comparator) (0) | 2026.02.10 |
|---|---|
| [Lv.1] 폰켓몬 (0) | 2026.02.10 |
| 💚[Lv.2] 뒤에 있는 큰 수 찾기 (0) | 2026.02.04 |
| [Lv.2] 구명보트 : Java (0) | 2026.02.03 |
| [Lv.2] 오픈채팅방 : Java (0) | 2026.02.03 |