

다리가 견딜 수 있는 무게만큼을 검사하고 순서대로 트럭을 보내면 된다.
만약 그 다음 트럭이 견딜 수 있는 무게 이상이 된다면 0인 트럭을 추가해서 그 전 트럭을 계속 이동시켜주면 된다.
#include <string>
#include <vector>
#include <queue>
//1.초를 어떻게 셀것인가 -> 무게가 0인을 자동차를 추가하자 및 초 추가
//2.자동차무게의 합이 다리가 견딜 수 있는 무게보다 크다면? -> 0추가
using namespace std;
int solution(int bridge_length, int weight, vector<int> truck_weights) {
int time = 0;
queue<int> que;
int weightSum = 0; //자동차 무게합
int i = 0; //인덱스
while (1) {
int curWeight = truck_weights[i];
if (i == truck_weights.size()) { //마지막 값만 남았을경우
time += bridge_length; //다리길이 만큼 걸림
break;
}
if (que.size() == bridge_length) { //다리길이 만큼 이동했다면
weightSum -= que.front(); //다리끝에 있는 자동차의 무게를 빼준다.
que.pop();
}
if (weightSum + curWeight <= weight) {
weightSum += curWeight;
que.push(curWeight);
i++;
}
else que.push(0);
time++;
}
return time;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][LV 1][C++] [1차] 비밀지 (0) | 2024.02.29 |
---|---|
[프로그래머스][C++][LV 1] 최대공약수와 최소공배수 (0) | 2024.02.26 |
[프로그래머스][C++][LV 2] [1차] 프렌즈4블록 (0) | 2024.02.05 |
[프로그래머스][C++][LV2](DP)땅따먹기 (0) | 2024.02.01 |
[프로그래머스 LV 2] 더 맵게 (0) | 2024.01.28 |