https://school.programmers.co.kr/learn/courses/30/lessons/42583
큐를 이용. 먼저 다리의 길이만큼 0을 넣어주고 다리 위 전체 무게인 totalWeight + 다음 대기 트럭이 weight 보다 작거나 같다면 큐에 넣어주고 weight 보다 크다면 0을 넣어준 다음 큐를 poll 해주는 것을 반복한다.
이 과정에서 다리의 길이만큼 0이 제거되고 뒤쪽으로 0이 추가되면서 시간은 1초씩 증가하게 된다. 그리고 다시 다리 길이를 정답에 더해주어 건너는데 걸린 시간 + 다리길이로 정답을 구할 수 있었다.
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
int totalWeight = 0;
Queue<Integer> queue = new LinkedList<>();
for (int i = 0; i < bridge_length; i++) {
queue.add(0);
}
int index = 0;
while (!queue.isEmpty()) {
totalWeight -= queue.poll();
if (index == truck_weights.length) break;
if (totalWeight + truck_weights[index] <= weight) {
queue.offer(truck_weights[index]);
totalWeight += truck_weights[index];
index++;
} else {
queue.offer(0);
}
answer++;
}
return answer + bridge_length;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 프로세스 (0) | 2023.05.17 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 기능개발 (0) | 2023.05.16 |
[프로그래머스][JAVA]Lv. 2 - 주식가격 (0) | 2023.05.07 |
[프로그래머스][JAVA]Lv. 2 - 의상 (0) | 2023.05.02 |
[프로그래머스][JAVA]Lv. 2 - 전화번호 목록 (0) | 2023.05.02 |