Programming/Baekjoon

백준 2980 도로와 신호등 [c++]

fishersheep 2022. 5. 21. 16:16
반응형
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <queue>
#include <stack>
#include <deque>

using namespace std;

typedef struct
{
	int x;	//신호등위치
	int y;	//빨간색지속시간
	int z;	//초록색지속시간
}node;

int main()
{	
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, l;
	int t1, t2, t3;
	int pre = 0;
	int result = 0;
	int idx = 0;
	vector<node>v;


	cin >> n >> l;	//신호등 개수, 도로의길이 입력

	for (int i = 0; i < n; i++)	//신호등정보입력
	{
		cin >> t1 >> t2 >> t3;
		v.push_back({ t1,t2,t3 });
	}



	while (idx<n)	//모든 신호등 확인
	{		
		pre = v[idx].x;	//현재시간은 신호등의 위치, 1초에 1미터이기때문에

		if (result > 0)
			pre += result;	//이전 신호등에서 대기시간이 있을 경우 현재시간에 더한다

		int num = v[idx].y + v[idx].z;	//빨간색 지속 + 초록색 지속

		if (pre % num < v[idx].y)	//빨간색 지속시간에 포함되는 경우
		{
			result += v[idx].y - (pre%num);	// 빨간색 지속시간에 num을 뺀만큼 대기시간증가
			idx++;
			continue;
		}
		else
		{
			idx++;	
			continue;
		}	//초록색 지속시간에 포함되는 경우
		
	}


	result += l;

	cout << result;

	return 0;
}
반응형

'Programming > Baekjoon' 카테고리의 다른 글

백준 1012 유기농배추 [c++]  (0) 2022.05.31
백준 1920 수찾기 [c++]  (0) 2022.05.30
백준 11279 c++ [최대힙]  (0) 2022.05.07
백준 1927 c++ [최소힙]  (0) 2022.05.07
백준 1051 c++ [숫자정사각형]  (0) 2022.05.06