링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42583
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
Queue<Integer> q = new LinkedList<>();
int time = 0;
int sum = 0;
for (int i = 0; i < truck_weights.length; i++) {
while (true) {
if(q.isEmpty()) {
q.offer(truck_weights[i]);
time++;
sum += truck_weights[i];
break;
} else if(q.size() == bridge_length) {
// 트럭이 다리에 진입할 수 없다면 : 다리가 꽉 참
sum -= q.poll();
time++;
} else {
// 트럭이 다리에 진입할 수 있다면
if(q.size() <= bridge_length && sum + truck_weights[i] <= weight) {
q.offer(truck_weights[i]);
time++;
sum += truck_weights[i];
break;
}
else {
// 트럭이 다리에 진입할 수 없다면 : 무게 초과
q.offer(0);
time++;
break;
}
}
}
}
// 마지막으로 다리에 진입한 트럭의 경우 다리를 건너지 않은 채 for문이 종료되므로 다리의 길이를 더해줌
return time + bridge_length;
}
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 모음 사전(Java) (1) | 2024.10.26 |
|---|---|
| [프로그래머스] 미로 탈출(Java) (3) | 2024.10.22 |
| [프로그래머스] 카펫(Java) (2) | 2024.10.17 |
| [프로그래머스] 피로도(Java), DFS (0) | 2024.10.16 |
| [프로그래머스] 구명보트(Java) (2) | 2024.10.14 |