코딩테스트

[프로그래머스 42583] 다리를 지나는 트럭 / C++

bemaru 2021. 4. 30. 02:21
반응형

programmers.co.kr/learn/courses/30/lessons/42583

 

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

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

programmers.co.kr

int solution(int bridge_length, int weight, vector<int> truck_weights) {

	queue<int> wait;
	queue<int> bridge;

	for (const auto& t : truck_weights)
	{
		wait.emplace(t);
	}

	int total = 0;
	int sec = 0;

	do {
		sec++;

		if (bridge.size() == bridge_length) {
			total -= bridge.front();
			bridge.pop();
		}

		if (!wait.empty() && (total + wait.front()) <= weight) {
			total += wait.front();
			bridge.push(wait.front());
			wait.pop();
		} 
		else {
			bridge.push(0);
		}

	} while (total);

	return sec;
}

 

반응형