[JAVA 문제 풀이] 343. 택배상자

프로그래머스 (131704)
Stupefyee's avatar
Jun 26, 2025
[JAVA 문제 풀이] 343. 택배상자
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public int solution(int[] order) { Stack<Integer> container = new Stack<>(); // 기존 컨테이너 // 기존 컨테이너 추가 for (int i = order.length; i > 0; i--) { container.push(i); } Stack<Integer> subContainer = new Stack<>(); // 서브 컨테이너 int answer = 0; for (int i = 0; i < order.length;) { // 기본 컨테이너랑 order의 맨 앞이 같은 경우 if (!container.isEmpty() && order[i] == container.peek()) { container.pop(); answer++; i++; continue; } // 서브 컨테이너의 앞과 order의 맨 앞이 같은 경우 if (!subContainer.isEmpty() && subContainer.peek() == order[i]) { subContainer.pop(); answer++; i++; continue; } // 메인 컨테이너가 비었고 서브 컨테이너의 앞과 order의 맨 앞이 다른 경우 >> 더이상 담기 불가 if(container.isEmpty() && subContainer.peek() != order[i]) { break; } subContainer.push(container.pop()); // 기본 컨테이너를 서브 컨테이너에 추가 >> 상자 옮기기 } return answer; } }
 

다른 사람의 코드

import java.util.*; class Solution { public int solution(int[] order) { int idx = 0; int answer = 0; Stack<Integer> sub = new Stack<>(); // 서브 컨테이너 for (int i = 0; i < order.length; i++) { sub.add(i + 1); // 서브 컨테이너로 미리 옮기고 while (!sub.isEmpty()) { if (sub.peek() == order[idx]) { // 서브컨테이너랑 order랑 같으면 sub.pop(); answer++; // 트럭에 담기 idx++; // 다음 비교를 위한 인덱스 증가 } else break; } } return answer; } }
 
Share article

stupefyee