티스토리 뷰
728x90
다리의 길이만큼 0 (큐에 들어갈 수 없는 어떤 값)을 큐에 추가하여 다리를 구현하고
매초마다 큐에서 remove와 add를 해주면서 weight와 index를 관리해준다.
해당 '초'에 다리에서 트럭이 내려가면(remove 값이 0이 아니면) 새로운 트럭이 올라올 수 있으므로 weight 측정을 가장 먼저 구현해야 한다.
해당 문제는 시간이라는 축을 값으로 구현한다는 아이디어만 생각하면 쉬운 문제이지만
이 아이디어를 얻기가 쉽지 않아 고려해야 될 것이 엄청 많게 느껴진다.
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int answer = 0;
//다리의 길이만큼 큐에 0 add.
//0은 '초'를 의미함.
var queue = new LinkedList<Integer>();
for (var i = 0; i < bridge_length; i++) {
queue.add(0);
}
var index = 0;
while (!queue.isEmpty()) {
//모든 트럭이 다 올라가면 다리가 빌 때까지 시간++.
if (index == truck_weights.length) {
while (!queue.isEmpty()) {
var temp = queue.remove();
answer++;
}
break;
}
var truck = truck_weights[index];
var now = queue.remove();
//트럭이 다리에서 제거되면 무게 반환.
//내리는 트럭이 있으면 그 '초'안에 새로운 트럭이 들어올 수 있음.
if (now != 0) {
weight += now;
}
//트럭이 다리 위로 올라갈 수 있을 때
if (weight - truck >= 0) {
index++;
queue.add(truck);
weight -= truck;
//트럭이 올라가지 못 할 때
} else {
queue.add(0);
}
answer++;
}
return answer;
}
}
'CodingTest' 카테고리의 다른 글
가장 큰 수 (Java, Comparator, 프로그래머스) (0) | 2022.08.18 |
---|---|
메뉴 리뉴얼 (Java, DFS, 프로그래머스) (0) | 2022.08.16 |
스킬트리 (Java, String regex, 프로그래머스) (0) | 2022.07.17 |
주차 요금 계산 (Java, 구현, 프로그래머스) (0) | 2022.07.14 |
N-Queen (Java, Backtracking, 프로그래머스) (0) | 2022.07.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- RequestParam
- 배포
- vim
- Dap
- 도커
- RequestBody
- 레디스
- RequestPart
- ModelAttribute
- IDE
- neovim
- 아키텍처
- lunarvim
- 루나빔
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함