프로그래머스 - [Level 2] 다리를 지나는 트럭(JAVA)
카테고리 : 스택/큐
이런류의 문제는 index관리가 쉽지 않아 '맞왜틀'에 빠진적이 많았다.
이 문제에서 인덱스를 관리하는 핵심아이디어는 '초 단위'로
Queue에 push해주는 것이다.
다리를 Queue로 바라보고, 다리가 트럭을 수용할 수 있다면 트럭의 무게를
그렇지 않다면, 0을 집어넣어 Queue의 size가 Bridge_length일 때
Queue를 poll 해준다.
소스코드
import java.util.Queue;
import java.util.LinkedList;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Queue<Integer> q=new LinkedList<>();
int total=0;
for(int i=0;i<truck_weights.length;i++){
int w=truck_weights[i];
while(true){
if(q.isEmpty()){
q.offer(w);
total+=w;
answer++;
break;
}else if(q.size()==bridge_length){
total-=q.poll();
}
else{
if(total+w>weight){
q.offer(0);
answer++;
}
else{
q.offer(w);
answer++;
total+=w;
break;
}
}
}
}
return answer+bridge_length;
}
}
Leave a comment