728x90
🔗 문제 링크
📂 분류
시물레이션
큐
💡 풀이
문제 설명에 트럭의 전진이 안나와있어서 이해하는데 좀 오래걸렸는데 질문목록을 보니 나만 그런게 아니였다.
다리를 큐로 선언하고, 트럭들을 큐에 넣고 빼주는 것을 구현하면 된다.
큐에 트럭을 넣을 수 있는 조건은
- 큐가 비어있는 경우
- 큐가 가득차지 않은 경우
- 무게가 초과 되지않은 경우
이렇게 3가지가 있다.
위 조건이 만족하지 않으면 다음 트럭이 다리는 지날 수 있도록 0을 넣어주면서 poll()
메서드를 이용해 트럭이 다리를 건너도록 해준다.
answer를 반환할 때는 트럭은 1초에 한 칸씩 전진하기 때문에 다리 길이를 더하고 반환한다.
💻 코드
import java.util.*;
class Solution {
static LinkedList<Integer> bridge = new LinkedList<>();
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0, totalWeight = 0;
for (int i = 0; i < bridge_length; i++) {
bridge.add(0);
}
for (int t : truck_weights) {
while ((totalWeight + t - bridge.peek()) > weight) {
totalWeight -= bridge.poll();
bridge.add(0);
answer += 1;
}
totalWeight -= bridge.poll();
totalWeight += t;
bridge.add(t);
answer += 1;
}
return answer + bridge_length;
}
}
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
[c++] 프로그래머스 - 빛의 경로 사이클 (Level 2) (0) | 2022.02.10 |
---|---|
[c++] 프로그래머스 - 신고 결과 받기 (2022 KAKAO BLIND RECRUITMENT) (0) | 2022.02.09 |
[C++] 프로그래머스 - 더 맵게 (Level 2) (0) | 2022.02.09 |
[자바] 프로그래머스 - H-Index (Level 2) (0) | 2022.02.09 |
[자바] 프로그래머스 - 위장 (Level 2) (0) | 2022.02.08 |