문제 :
https://school.programmers.co.kr/learn/courses/30/lessons/131704
접근 :
- 메인 컨베이어의 1부터 n 까지 상자를 대상으로 실행한다.
- order를 확인하여서 order에 해당하는 위치의 상자에 도달하면 트럭에 상자를 넣고 보조 컨베이어의 마지막 상자를 확인하여 order의 다음 순번에 해당하는 상자를 트럭에 넣는다. (다음 순번의 order와 달라지거나 보조 컨베이어가 빌 때까지 반복)
- 만약 order와 다른 상자 일 경우, 보조 컨베이어에 넣는다.
코드 구현 :
import java.util.Stack;
class Solution {
public int solution(int[] order) {
int answer = 0;
Stack<Integer> s = new Stack<>();
int flag = 0;
for(int i = 1 ; i <= order.length ; i++){
if(order[flag] != i){
s.push(i);
continue;
}
//만약 매인 컨베이어가 트럭에 실어야 하는 순번이 오면 트럭에 넣고 다음 실어야 할 택배의 번호를 확인한다.
flag++;
answer++;
//만약 서브 컨베이어에 다음 실어야할 택배 박스가 있다면 트럭에 넣는다.
while(s.size() > 0 && s.peek() == order[flag]){
s.pop();
flag++;
answer++;
}
}
return answer;
}
}
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 프로그래머스 미로탈출_탐색 (0) | 2024.08.04 |
---|---|
[JAVA] 프로그래머스 전력망을 둘로 나누기_트리 (0) | 2024.07.30 |
[JAVA] 숫자 변환하기_DP (1) | 2024.07.12 |
[JAVA] 프로그래머스 주차 요금 계산_tree map (0) | 2024.07.10 |
[JAVA] 백준 1103 게임_DP (0) | 2024.07.06 |