-
[백준/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; }
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준/BOJ] 1325번 효율적인 해킹 (C++) (0) 2021.09.20 [백준/BOJ] 1919번 애너그램 만들기 (C++) (0) 2021.09.20 [백준/BOJ] 3048번 개미 (C++) (0) 2021.09.18 [백준/BOJ] 10798번 세로 읽기 (C++) (0) 2021.09.14 [백준/BOJ] 11000번 강의실 배정 (C++) (0) 2021.09.14