문제
https://programmers.co.kr/learn/courses/30/lessons/42583
코딩테스트 연습 - 다리를 지나는 트럭
트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이��
programmers.co.kr
풀이
Queue에 트럭의 무게를 입력하는 방식으로 풀었다.
1. Queue<Integer> bridge
2. 다리가 비어있으면, truck 하나의 무게를 올린다.
3. 트럭이 다 지나갔으면, Queue의 크기는 다리의 길이와 같아진다.
트럭 하나의 무게를 뺀다.
4. 다리가 비어있지 않고, 현재 무게와 트럭 하나의 무게 합이 최대하중보다 작거나 같을 때, 트럭 하나를 올린다.
5. 다리가 비어있지 않고, 무게가 초과될 때 0을 넣는다.
코드
import java.util.Queue;
import java.util.LinkedList;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
Queue<Integer> bridge = new LinkedList<>();
int current_weight = 0;
for(int truck : truck_weights)
{
while(true){
if(bridge.isEmpty()){
bridge.offer(truck);
answer++;
current_weight+=truck;
break;
}else if(bridge.size() == bridge_length){
current_weight-=bridge.poll();
}else if(current_weight + truck <= weight){
bridge.offer(truck);
answer++;
current_weight+=truck;
break;
}else{
bridge.offer(0);
answer++;
}
}
}
return answer + bridge_length;
}
}
'Preparing Coding Test > Programmers L2' 카테고리의 다른 글
[Java/프로그래머스] 카카오프렌즈 컬러링북 (0) | 2020.08.15 |
---|---|
[Java/프로그래머스] 멀쩡한 사각형 (0) | 2020.08.12 |
[Java/프로그래머스] 프린터 (0) | 2020.08.12 |
[Java/프로그래머스] 스킬트리 (0) | 2020.08.10 |
[Java/프로그래머스] 124 나라의 숫자 (0) | 2020.08.07 |