✏️ Algorithm.
- 주어진 트럭들이 다리를 지나갈 때 걸리는 시간을 구하는 문제
📋 Solved.
1. 트럭이 지나가는 다리(bridege)를 기준으로 구현하였다.
2. 시간 계산(answer)은 다리위에 트럭이 진입(offer)할 때 마다 시간을 1초씩 추가 하였다.
3. 현재 트럭이 다리에 진입할 경우 하중을 초과하면 0 무게의 트럭을 진입 시키면서 시간을 1초씩 추가하였다.
4. 다리위의 트럭 수가 다리 길이와 같아지면 가장 먼저 진입한 트럭을 내보냈다(poll).
5. 0 무게의 트럭이 아닌 실제 트럭이 진입(offer(truck))하면 다음 트럭(truck)이 진입 한다.
6. 모든 트럭이 진입하면. 마지막 트럭이 진입한 후 시간(answer)에 다리 길이(bridge_length)의 합이 결과값(return)으로 구해진다
✔️ Code.
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Queue<Integer> bridege = new LinkedList<>();
for (int truck : truck_weights) {
while(true){
if(bridege.isEmpty()){
bridege.offer(truck);
answer++;
break;
}else{
if(bridege.size() == bridge_length){
bridege.poll();
}
int bridegeWeight = getBridegeWeight(bridege);
if(bridegeWeight + truck <= weight){
bridege.offer(truck);
answer++;
break;
}else if(bridegeWeight + truck > weight){
bridege.offer(0);
answer++;
}
}
}
}
return answer + bridge_length;
}
private int getBridegeWeight(Queue<Integer> bridege) {
int result = 0;
for (Integer integer : bridege) {
result += integer;
}
return result;
}
}
'Algorithm > programmers' 카테고리의 다른 글
[programmers][Level1][Java] 신규아이디 추천 (0) | 2021.03.25 |
---|