반응형
https://programmers.co.kr/learn/courses/30/lessons/42583
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
//다리를 지나는 시간
int sec = 0;
//다리에 올라간 무게
int bridge_weight = 0;
//다리
Queue<Integer> que = new LinkedList<>();
//트럭 수 만큼 반복문 실행
for(int truck : truck_weights){
while(true){
//다리가 비어잇다면 트럭 출발
if(que.isEmpty()){
que.add(truck);
bridge_weight += truck;
sec++;
break;
//다리가 꽉찻으면
}else if(que.size() == bridge_length){
//하나 뺀다.
bridge_weight -= que.poll();
//다리에 자리가 잇으면
}else{
//다리에잇는 무게와 새로 들어갈 트럭의 무게가 더 크면
if(bridge_weight + truck > weight){
//시간만 늘린다.
sec++;
//무게가 0인 트럭을 추가함으로써 다리를 채운다.
que.add(0);
}else{
que.add(truck);
sec++;
bridge_weight += truck;
break;
}
}
}
}
//다리의 길이 + 트럭이 지나간 시간
return bridge_length+sec;
}
}
반응형
'코딩테스트 > 프로그래머스 2단계' 카테고리의 다른 글
프로그래머스 2단계 - 주식가격(스택/큐) (0) | 2021.09.13 |
---|---|
프로그래머스 2단계 - 프린터(스택/큐) (0) | 2021.09.09 |
프로그래머스 2단계 - 기능개발(스택/큐) (0) | 2021.09.09 |
프로그래머스 2단계 - 위장(해쉬) (0) | 2021.09.08 |
프로그래머스 2단계 - 전화번호 목록(해시) (0) | 2021.09.07 |