File tree Expand file tree Collapse file tree
프로그래머스/2/42583. 다리를 지나는 트럭 Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11# [ level 2] 다리를 지나는 트럭 - 42583
22
3- [ 문제 링크] ( https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=java )
3+ [ 문제 링크] ( https://school.programmers.co.kr/learn/courses/30/lessons/42583 )
44
55### 성능 요약
66
7- 메모리: 83.3 MB, 시간: 21.65 ms
7+ 메모리: 94.8 MB, 시간: 19.95 ms
88
99### 구분
1010
1616
1717### 제출 일자
1818
19- 2026년 02월 06일 23:54:45
19+ 2026년 02월 09일 13:11:47
2020
2121### 문제 설명
2222
Original file line number Diff line number Diff line change 33class Solution {
44
55 public int solution (int bridge_length , int weight , int [] truck_weights ) {
6- int answer = 0 ;
76
8- Queue <Integer > bridges = new LinkedList <>();
7+ // 다리 만들기
8+ Queue <Integer > bridge = new LinkedList <Integer >();
99 for (int i = 0 ; i < bridge_length ; i ++) {
10- bridges .add (0 );
10+ bridge .add (0 );
1111 }
1212
1313 int time = 0 ;
1414 int currentWeight = 0 ;
15- //몇번째 트럭까지 보냈는지
15+ // 현재까지 몇 개의 트럭이 지나갔는지 표시
1616 int idx = 0 ;
1717
18- //보낼 트럭이 남아있거나, 아직 트럭이 다 내리지 못한 경우
18+ // 지나갈 트럭이 있거나, 다리 위에 트럭이 있는 동안
1919 while (idx < truck_weights .length || currentWeight > 0 ) {
20+ // 시간이 지나고
2021 time ++;
2122
22- // 트럭이 끝에 도달했으면 내림 -> 큐의 마지막을 그냥 꺼내버림
23- int out = bridges .poll ();
23+ // 다리 맨 끝 확인
24+ int out = bridge .poll ();
2425 currentWeight -= out ;
2526
26- // 다음트럭이 올라올 수 있는 지 확인
27- if (idx < truck_weights .length ) {
27+ //다리 첫 번째 확인
28+ if (idx < truck_weights .length ) {
29+ // 새로운 트럭이 다리위에 올라감
2830 if (currentWeight + truck_weights [idx ] <= weight ) {
29- bridges .add (truck_weights [idx ]);
3031 currentWeight += truck_weights [idx ];
32+ bridge .add (truck_weights [idx ]);
3133 idx ++;
3234 } else {
33- bridges .add (0 );
35+ bridge .add (0 );
3436 }
3537 }
3638 }
3739
38- return time ;
39- }
40+
41+ return time ;
42+ }
4043}
You can’t perform that action at this time.
0 commit comments