[알고리즘] 프로그래머스 다리를 지나는 트럭 Java(자바)

[알고리즘] 프로그래머스 다리를 지나는 트럭 Java(자바)

- 문제

- 코드 설명

처음엔 트럭별로 시간을 관리하려고 했는데 시간 초과

이 후 다른 분이 올려놓은 코드를 보고 문제를 해결했다. 아직 많이 부족하다.

https://fbtmdwhd33.tistory.com/220

import java.util.*; class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { int answer = 0; int weight_sum = 0; int len = truck_weights.length; int index = 0; Queue on_bridge = new LinkedList<>(); //모든차량이 다리위에 올라가면 while문 종료 while(index < len){ //다리 위에 트럭이 다 차면 빼준다. if(on_bridge.size() == bridge_length){ weight_sum -= on_bridge.poll(); } //다리에 트럭이 올라갈 공간이 있지만 무게의 합 때문에 올라가지 못할 경우 else if(weight_sum + truck_weights[index] > weight){ on_bridge.offer(0); answer++; } //다리에 트럭을 올린다. else{ on_bridge.offer(truck_weights[index]); weight_sum += truck_weights[index++]; answer++; } } answer += bridge_length; return answer; } }

내가 생각하지 못한 부분은 다리의 하중을 초과하게 될 경우 트럭이 올라가지 못 할 때이다.

이 경우 해당 코드에서 큐에 0을 넣어서 시간과 큐 사이즈를 관리했다.

아마 답을 보지 못했으면 이런 풀이 방식을 생각하지 못했을듯

이 부분을 이해하니 흐름이 명확해지고 코드를 짤 수 있었다.

마지막 결과 값에 다리의 크기를 더해주는 이유는

마지막 트럭이 올라가는 순간 while문에서 종료가 되기때문에

해당 트럭이 나가기 위해 필요한 시간을 더해준 것이다.

- 결과

from http://yourknow.tistory.com/29 by ccl(S) rewrite - 2021-12-30 14:01:20