반응형
[프로그래머스] 다리를 지나는 트럭
https://programmers.co.kr/learn/courses/30/lessons/42583
*객체 활용
package com.company;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
// write your code here
int bridge_length=2;
int weight=10;
int[] truck_weights={7,4,5,6};
int bWeight=0; //다리 위 트럭무게의 합
//출발대기 트럭
Queue<Truck> trucks_r = new LinkedList<>();
for(int truck_weight: truck_weights){
trucks_r.offer( new Truck( truck_weight ));
}
//다리 위 트럭
Queue<Truck> trucks_b = new LinkedList<>();
bWeight += trucks_r.peek().weight;
trucks_b.offer( trucks_r.poll() );
int time=0;
while ( !trucks_b.isEmpty() ){
time++;
//다리 위 트럭 한칸씩 이동
for(Truck truck:trucks_b){
truck.position++;
}
//다 이동한 애는 빠져나옴
if(trucks_b.peek().position > bridge_length){
bWeight -= trucks_b.poll().weight;
}
//새로운 트럭 투입판단 후 투입
if(trucks_r.isEmpty()==false && (bWeight + trucks_r.peek().weight <= weight)){
bWeight += trucks_r.peek().weight;
trucks_r.peek().position++;
trucks_b.offer( trucks_r.poll() );
}
}//while
System.out.println("시간: " + time);
}
static class Truck{
int position;
int weight;
public Truck(int weight) {
this.weight = weight;
this.position =0;
}
}
}
그냥 배열로 풀려면 빈 배열에 0을 넣고 조건에 맞을때 트럭을 집어넣어서 한칸씩 미는 방법이 있을 수 있을듯 하다.
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[재귀] 조합 (0) | 2018.10.04 |
---|---|
[정렬] 주식가격 (0) | 2018.09.28 |
[정렬] 프린터 (0) | 2018.09.26 |
[Queue] 기능개발 (0) | 2018.09.24 |
[구현] 줄기세포배양 (0) | 2018.09.24 |