728x90
문제
풀이
큐 활용
- 큐를 다리로 생각하고 트럭을 넣고 빼면서 진행
- 큐의 처음 상태를 다리 길이만큼 0을 넣고 시작해야 함 -> 큐에 있는 트럭을 맨 앞으로 이동시키기 위함
- 현재 트럭을 태울 때까지 반복문을 돌리면서 상태를 갱신함
어려웠던 점
2번째 풀이 시도 끝에 풀었던 문제이다.
순차적으로 넣고 빼는 걸 구현하는게 생각보다 조건들을 다 해결하기가 까다로웠다.
코드
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int time = 0;
Queue<Integer> q = new LinkedList<>(); // 다리
for (int i = 0; i < bridge_length; i++)
q.add(0);
int sum = 0; // 현재 다리에 있는 트럭 총 무게
int cnt = 0; // 현재 다리에 있는 트럭 개수
for (int w : truck_weights) {
if (w + sum > weight || cnt >= bridge_length) {
while (true) {
if (q.peek() > 0) cnt--;
sum -= q.poll();
time++;
if (w + sum <= weight && cnt < bridge_length)
break;
q.add(0);
}
} else {
if (q.peek() > 0) cnt--;
sum -= q.poll();
time++;
}
q.add(w);
sum += w;
cnt++;
}
return time + bridge_length;
}
}
'프로그래머스' 카테고리의 다른 글
프로그래머스 lv2 - 괄호 회전하기 (자바) (0) | 2024.07.01 |
---|---|
프로그래머스 lv2 - 스킬트리 (0) | 2024.06.23 |
프로그래머스 lv2 - 두 큐 합 같게 만들기 (자바) [2022 KAKAO TECH INTERNSHIP] (0) | 2024.06.23 |
프로그래머스 lv2 - 구명보트 (자바) (0) | 2024.06.22 |
프로그래머스 lv2 - 요격 시스템 (자바) (0) | 2024.06.22 |