programmers.co.kr/learn/courses/30/lessons/42583
코딩테스트 연습 - 다리를 지나는 트럭
트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이
programmers.co.kr
풀이
1. 다리 자체를 queue로 관리한다!!
ex) 트럭 길이는 다 1이고 1초마다 1씩 움직이니까
-> 트럭이 안들어가면 0 삽입
-> 트럭이 들어가면 트럭 무게 삽입
2. 다리 위에 올라가 있는 트럭 무게 총합을 on_bridge로 관리!
3. 기본 for문은 truck 갯수
1) while 루프문 돌리면서 트럭이 다리에 들어갈때까지 반복
- 트럭이 들어갈 수 있는 상태면 truck 무게 삽입, on_bridge 업뎃
- 트럭이 들어갈 수 없는 상태면 0삽입
4. 마지막 트럭 들어가면 for문이 끝나니까 최종적으로 답은 answer + bridge_length
#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> a;//다리 위 상태
int truck;
int on_bridge=0;//다리 위에 올라가있는 트럭들 무게 총합
for(int i=0;i<truck_weights.size();i++)
{
truck = truck_weights[i];
while(true)
{
if(a.empty())//다리가 비어있으면
{
a.push(truck);
answer++;
on_bridge +=truck;
break;
}
else if(a.size()==bridge_length)
{
on_bridge -=a.front();
a.pop();
}
if(on_bridge+truck>weight)//트럭이 올라갈 수 없으면
{
a.push(0);
answer++;
}
else
{
a.push(truck);
answer++;
on_bridge +=truck;
break;
}
}
}
//마지막 트럭이 다리에 올라가는 순간
return answer+bridge_length;
}
'c++ > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 더 맵게 c++ (0) | 2020.10.28 |
---|---|
프로그래머스 : 프린터 c++ (0) | 2020.10.27 |
프로그래머스 : 기능개발 c++ (0) | 2020.10.27 |
프로그래머스 : 베스트앨범 C++ (0) | 2020.10.27 |
프로그래머스 : 풍선 터트리기 C++ (0) | 2020.09.26 |