publicintsolution(int bridge_length, int weight, int[] truck_weights){ int answer = 0;
//객체 생성하고 대기트럭큐 생성후 큐에 트럭을 넣어줌 Bridge bridge = new Bridge(bridge_length,weight); Queue<Truck> waitTrucks = new LinkedList<>(); for (int tWeight : truck_weights) { waitTrucks.add(new Truck(tWeight)); }
//대기트럭이 없을때까지 반복 while(waitTrucks.size() != 0) { //다리에 올릴 수 있는지 확인하고 가능하면 트럭을 넣고 시간에 1초 더해줌 if(bridge.isOnPossible(waitTrucks.peek().getWeight())) { bridge.truckIn(waitTrucks.poll()); bridge.allMove(); answer++; } //올릴 수 없으면 다리의 첫번째 트럭이 도착할때까지 시간을 더해줌 else answer = bridge.moveUntilTruckArrive(answer); //트럭이 도착했으면 다리트럭큐에서 빼줌 if(bridge.isArrived()) bridge.truckOut(); }
//다리의 마지막 트럭이 도착할때까지 시간을 더함 answer = bridge.moveLastTruck(answer);
return answer;
}
}
결과
전에 풀었던 코드보다 훨씬 알아보기도 편하고 걸리던 시간도 단축됐다. 가끔 과거 코드를 바꿔보는 것도 도움이 되는 것 같다.