반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=java
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[풀이과정]
테케로 문제 이해를 해야 해서 좀 힘들었다.
바보처럼 이해를 못 해서 엄청 헤맸음..ㅠㅜ 그렇게 어려운 문제는 아니었는데
queue를 이용했고 그냥 주어진 순서대로만 무게 되는지 체크해서 트럭 올려두면 된다
[코드]
import java.io.*;
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int time = 0;
int currentWeight = 0;
Queue<Integer> bridge = new LinkedList<>();
for (int i = 0; i < bridge_length; i++) {
bridge.add(0); // 초기 다리 상태
}
Queue<Integer> waiting = new LinkedList<>();
for (int w : truck_weights) {
waiting.add(w);
}
while (!waiting.isEmpty()) {
time++; // 시간 흐름
currentWeight -= bridge.poll(); // 다리 맨 앞 칸 제거
//다음 트럭이 올라갔을 때 다리가 감당 가능하면
if (currentWeight + waiting.peek() <= weight) {
int nextTruck = waiting.poll();
bridge.add(nextTruck);
currentWeight += nextTruck;
}
//감당 못 하면
else {
bridge.add(0); // 트럭 대신 빈 자리
}
}
time += bridge_length; // 마지막 트럭이 다리 통과하는 시간
return time;
}
}
반응형
'알고리즘 > 큐' 카테고리의 다른 글
[백준] 1966 : 프린터 큐 (0) | 2023.03.28 |
---|---|
[백준] 1158 : 요세푸스 문제 (0) | 2023.03.26 |