알고리즘 문제풀이/백준
[백준/BOJ] 2980번 도로와 신호등 (C++)
노력의천재
2021. 9. 19. 02:10
https://www.acmicpc.net/problem/2980
현재 시간에서 빨간불이 지속되는 시간 + 파란불이 지속되는 시간을 나눈 나머지가 빨간불이 지속되는 시간보다 작다면 두 값을 빼줘서 시간에 더해줘야 한다. (이것이 빨간불을 기다리는 시간) 그외의 경우는 기다리지 않고 지나갈 수 있으므로 시간을 1씩 더해준다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(0);
int N, L, time = 1;
cin >> N >> L;
vector<vector<int> > v(N, vector<int>(3));
for(int i = 0; i < N; i++) {
cin>> v[i][0] >> v[i][1] >> v[i][2];
}
for(int i = 1; i <= L; i++) {
for(int j = 0; j < N; j++) {
if(i == v[j][0] && v[j][1] > time % (v[j][1] + v[j][2])) {
time += v[j][1] - time % (v[j][1] + v[j][2]);
}
}
time++;
}
cout << time - 1;
}