‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀
문제 👉 <코딩테스트 연습 - 다리를 지나는 트럭 | 프로그래머스>
1. 문제
- 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건넌다.
- 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는 알아내야 한다.
- 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딘다.
2. 풀이
Queue
를 이용한 문제 풀이
트럭은 다리를 대기하는 순서대로 건너기 때문에 다리를 건너는 트럭을 Queue로 나타낸다.
- 다리를 건너고 있는 트럭이 나갈 시간일 때
- Queue에서 트럭의 정보를 뺀다.
- 다리가 견딜수 있는 무게에서 트럭의 무게를 더한다.
- 다리가 견딜 수 있는 무게가 대기 트럭의 무게보다 클 때
- Queue에 트럭의 정보{트럭의 무게, 다리에서 나갈 시간}를 넣는다.,
- 다리가 견딜수 있는 무게에서 트럭의 무게를 뺀다.
3. 코드
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
Queue<int[]> queue = new LinkedList<>();
int time = 0, idx = 0;
while(idx < truck_weights.length){
if(!queue.isEmpty() && time == queue.peek()[1]){
int[] truck = queue.poll();
weight += truck[0];
}
// 다리에서 나갈 시간 = time(현재 시간) + bridge_length(경과 시간)
if(weight >= truck_weights[idx]){
queue.add(new int[]{truck_weights[idx], time + bridge_length});
weight -= truck_weights[idx++];
}
time++;
}
// 마지막 트럭이 다리에서 나갈 시간 더하기
return time + bridge_length;
}
}
References
🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스] 주식가격 [JAVA(자바)] (0) | 2021.11.25 |
---|---|
[프로그래머스] K번째수 [JAVA(자바)] (0) | 2021.11.25 |
[프로그래머스] H-Index [JAVA(자바)] (0) | 2021.11.25 |
댓글