문제 설명
제한 조건
문제풀이
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;
}
}
※ 내 생각
자료구조 큐를 이용하는 문제입니다.
이 문제는 경우를 나눠서 큐를 구현하면 되는 문제입니다.
큐가 비어있는경우
큐가 꽉찬 경우
큐가 꽉 차진 않았지만
무게를 초과한 경우
무게를 초과하지 않은 경우
큐에 관련한 문제만 풀면 시간과 메모리가 심하게 들쑥 날쑥 하네요.....
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 이중 우선 순위 큐(자바) / 힙 (0) | 2021.10.01 |
---|---|
[프로그래머스] 디스크 컨트롤러(자바) /Heap (0) | 2021.09.27 |
[프로그래머스] 더 맵게 (자바) / 힙 (0) | 2021.09.16 |
[프로그래머스] 프린터(자바) / 자료구조 (0) | 2021.09.09 |
[프로그래머스] 베스트 앨범(자바) / Hash (0) | 2021.09.05 |