Algorithm/프로그래머스
[프로그래머스] 다리를 지나는 트럭(자바) / 큐
미스터로즈
2021. 9. 12. 10:31
문제 설명

제한 조건

문제풀이
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Queue<Integer> q = new LinkedList<>();
int max = 0;
for(int i = 0 ; i < truck_weights.length;i++){
while(true){
//큐가 비어 있는 경우
if(q.isEmpty()){
q.offer(truck_weights[i]);
max+=truck_weights[i];
answer++;
break;
}
//큐가 꽉찬 경우
if(q.size()==bridge_length){
max-=q.poll();
}
//큐가 다 차지 않은 경우
//무게가 초과하는 경우
if(max + truck_weights[i] >weight){
q.offer(0);
answer++;
}else{
q.offer(truck_weights[i]);
max+=truck_weights[i];
answer++;
break;
}
}
}
return answer + bridge_length;
}
}

※ 내 생각
자료구조 큐를 이용하는 문제입니다.
이 문제는 경우를 나눠서 큐를 구현하면 되는 문제입니다.
큐가 비어있는경우
큐가 꽉찬 경우
큐가 꽉 차진 않았지만
무게를 초과한 경우
무게를 초과하지 않은 경우
큐에 관련한 문제만 풀면 시간과 메모리가 심하게 들쑥 날쑥 하네요.....