티스토리 뷰
title: "다리를 지나는 트럭"
category: 프로그래머스[Level-2]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-01-21"
문제 링크
C++
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(int bridge_length, int weight, vector<int> truck_weights) {
int answer = 0;
queue<int> q;
int sum = 0;
for(auto truck: truck_weights){
while(sum > 0){
// 트럭이 다리에 있는 경우
if(q.size() == bridge_length){
// 트럭이 다리를 지나감
sum -= q.front();
q.pop();
}
if(sum+truck > weight){
// 트럭을 못올림
q.push(0);
answer++;
}
else{
// 트럭을 올린다
q.push(truck);
sum += truck;
answer++;
break;
}
}
if(q.empty()){
sum += truck;
q.push(truck);
answer++;
}
}
answer += bridge_length; // 마지막 트럭이 다리에 들어오고 반복분 종료
return answer;
}
JavaScript
function solution(bridge_length, weight, truck_weights) {
var answer = 0;
const queue = [];
let sum = 0;
truck_weights.some((truck) => {
if (queue.length > 0) {
while (true) {
if (queue.length === bridge_length) {
// 트럭이 다리를 지나감
sum -= queue.shift();
}
if (sum + truck <= weight) {
// 트럭을 올림
queue.push(truck);
sum += truck;
answer++;
break;
} else {
// 길이만 늘림
queue.push(0);
answer++;
}
}
} else {
sum += truck;
queue.push(truck);
answer++;
}
});
answer += bridge_length; // 다리에 대기 트럭이 올라간 시점이므로
return answer;
}
728x90
반응형
'Programmers Solutions > Level-2' 카테고리의 다른 글
[프로그래머스] 멀쩡한 사각형 (0) | 2021.01.31 |
---|---|
[프로그래머스] 스킬트리 (0) | 2021.01.31 |
[프로그래머스] 기능개발 (0) | 2021.01.31 |
[프로그래머스] 숫자의 표현 (0) | 2021.01.31 |
[프로그래머스] 이진 변환 반복하기 (0) | 2021.01.31 |
댓글