https://school.programmers.co.kr/learn/courses/30/lessons/42583
풀이 - 나의 생각
큐를 트럭과 다리를 담당하도록
2개를 선언했다.
1. Truck Queue
우선 Queue에 truck을 다 집어 넣는다.
2. Bridge Queue
우선 Queue에 다리 길이 만큼 0을 다 집어 넣는다.
이때 0은 truck이 올라가 있지 않다는 것을 의미한다.
3. 반복문 돌리기
while문으로 Bridge Queue가 비어 있지 않는 경우 반복문을 돌린다.
다리에 올라가 있는 트럭의 무게를 체크하면서
다음 트럭을 올려도 되는지, 안 되는지 파악한다.
코드
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int time = 0;
int current_weight = 0;
Queue<Integer> bridge = new LinkedList<>();
Queue<Integer> trucks = new LinkedList<>();
for(int truck : truck_weights){
trucks.offer(truck);
}
for(int i = 0; i < bridge_length; i++){
bridge.offer(0);
}
while(!bridge.isEmpty()){
int passed_truck = bridge.poll();
current_weight -= passed_truck;
if(!trucks.isEmpty()){
int next_truck = trucks.peek();
if(current_weight + next_truck <= weight){
bridge.offer(trucks.poll());
current_weight += next_truck;
}else{
bridge.offer(0);
}
}
time++;
}
return time;
}
}
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
2022 KAKAO TECH INTERNSHIP > 두 큐 합 같게 만들기 - JAVA (0) | 2024.02.06 |
---|---|
코딩테스트 연습탐욕법 > 큰 수 만들기 - JAVA (Stack) (0) | 2024.02.06 |
코딩테스트 연습 > 소수 찾기 (순열) (0) | 2024.01.29 |
월간 코드 챌린지 시즌1 > 쿼드압축 후 개수 세기 - JAVA (분할 정복) (0) | 2024.01.22 |
월간 코드 챌린지 시즌2 > 2개 이하로 다른 비트 (1) | 2024.01.21 |