Algorithm/프로그래머스

[프로그래머스]Level.2 스택/큐-다리를 지나는 트럭

youngine 2021. 1. 13. 23:31
 

코딩테스트 연습 - 다리를 지나는 트럭

트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이

programmers.co.kr

 

문제설명
제한조건
입출력예

 

진짜 문제에서 요구한 그대로 그냥 풀었다..

#include <string>
#include <vector>

using namespace std;

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    int answer = 0;
    pair<int, int> p;
	vector<pair<int, int>>v;
	int time = 0, now = 0, done = 0, i = 0;
	int truck = truck_weights.size();

	while (1) {

		if (truck != done) time++;
		else break;

		if (v.size() == 0) {
			v.push_back(make_pair(truck_weights.front(), 1));
			truck_weights.erase(truck_weights.begin());
		}
		else {
			for (i = 0, now = 0;i <v.size();i++) {
				if (bridge_length<=v[i].second) {
					v.erase(v.begin());
					done++;
					i--;
				}
				else {
					++v[i].second;
					now += v[i].first;
				}
			}
			if (truck_weights.size() != 0) {
				if (0 <= weight - now - truck_weights.front()) {
					v.push_back(make_pair(truck_weights.front(), 1));
					truck_weights.erase(truck_weights.begin());
				}
			}
		}
	}
    answer=time;
    return answer;
}