728x90
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
컨테이너 벨트에 있는 택배는 1, 2, 3, 4, 5 ... 순서로 택배가 나오고
이걸 잠시 둘 보조 컨테이너 벨트에 있는 택배는 후입선출이 가능하기 때문에 Stack을 써야겠다고 생각했다.
- 우선, 택배를 순서에 맞춰 트럭에 싣고, 싣지 못하는 택배들은 보조 컨테이너에 넣어줬다.
- 한바퀴 다 돌은 다음 보조 컨테이너에 있는 택배들을 택배에 실을 수 있을지 확인.
전체코드
import java.io.*;
import java.util.*;
class Solution {
public int solution(int[] order) {
Stack<Integer> assistant = new Stack<>();
int box = 1;
int idx = 0;
int count = 0;
//컨테이너와 보조컨테이너에 택배상자 나눠 넣기
while(true){
if(idx >= order.length || box > order.length){
break;
}
if(assistant.isEmpty()){
if(order[idx] == box){
count++;
idx++;
box++;
}else{
assistant.push(box);
box++;
}
}else{
if(order[idx] == box){
count++;
idx++;
box++;
}else if(order[idx] == assistant.peek()){
assistant.pop();
count++;
idx++;
}else{
assistant.push(box);
box++;
}
}
}
//보조 컨테이너에 있는 택배상자 확인
if(idx < order.length){
while(!assistant.isEmpty()){
if(order[idx] == assistant.peek()){
count++;
idx++;
assistant.pop();
}else{
break;
}
}
}
return count;
}
}
728x90
'코테 > Algorithm' 카테고리의 다른 글
[프로그래머스] 야근 지수 (JAVA) (0) | 2025.01.20 |
---|---|
[프로그래머스] 문자열 압축 (JAVA) (0) | 2025.01.14 |
[프로그래머스] 행렬의 곱셈(JAVA) (0) | 2025.01.09 |
[프로그래머스] k진수에서 소수 개수 구하기(JAVA) (0) | 2025.01.07 |
[프로그래머스] 조이스틱 (JAVA) (1) | 2024.12.31 |