Queue의 개념을 알고있어야 풀이가 가능한 문제이다.
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 sum_weight = 0;
Queue<Integer> truck = new LinkedList<>();
for (int i : truck_weights) {
while (true) {
//다리위가 비어있는 경우
if (truck.isEmpty()) {
truck.add(i);
sum_weight += i;
answer++;
break;
//다리가 꽉차있는경우
} else if (truck.size() == bridge_length) {
sum_weight -= truck.poll();
} else {
//다리가 비어있지도,꽉차지도 않고 견디는 무게보다 큰경우
if (i + sum_weight > weight) {
truck.add(0);
answer++;
} else {
truck.add(i);
sum_weight += i;
answer++;
break;
}
}
}
}
//다리위에 있는 모든 트럭이 지나가야되기 때문에 다리길이 더해주기
return answer + bridge_length;
}
}
[Programmers] Level2. 124 나라의 숫자 (Java) (0) | 2021.04.25 |
---|---|
[Programmers] Level2. 주식가격 (Java) (0) | 2021.04.17 |
[Programmers] Level1. 자릿수 더하기 (Java) (0) | 2021.01.25 |
[Programmers] Level1. 이상한 문자 만들기 (Java) (0) | 2021.01.24 |
[Programmers] Level1. 약수의 합 (Java) (0) | 2021.01.24 |