프로그래머스알고리즘

큐 - 다리를 지나는 트럭

풀스택 개발자 2021. 4. 25. 15:16
#include<iostream>
#include<vector>
#include<queue>
using namespace std;

int main()
{
	queue<int> q;
	int length = 2;
	int weight = 10;
	int sum = 0;
	int index = 0;
	int time = 0;
	vector<int> tmp;
	tmp.push_back(7);
	tmp.push_back(4);
	tmp.push_back(5);
	tmp.push_back(6);
	
	while(1)
	{
		time++;
		
		if(q.size()==length)//다리길이만큼 사이즈가 찼을 시 
		{
			sum = sum - q.front();
			q.pop();
		}
		if(sum + tmp[index] <= weight)//트럭의 무게가 다리의 저항 무게보다 적을때 
		{
			if(index == tmp.size()-1)//버스 모두 다 전송 
			{
				time = time + length;
				break; 
			}
			
			q.push(tmp[index]);
			sum = sum + tmp[index];
			index++;
			
		}
		else//트럭의 무게가 다리의 저항 무게보다 무겁기때문에 0을 삽입해서 트럭을 도착지점으로 밀어줌 
		{
			q.push(0);	
		} 
		
	}
	cout << time; 
	
}