티스토리 뷰

백준/실버

[백준 2980번] 도로와 신호등 (C++)

게임개발기원 2025. 6. 24. 02:05

문제 링크 : https://www.acmicpc.net/problem/2980

#include <bits/stdc++.h>
using namespace std;

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

    int N, L;
    cin >> N >> L;

    int cur = 0, prev = 0;

    while(N--)
    {
        int D, R, G;
        cin >> D >> R >> G;

        cur += (D-prev);
        int tmp = R+G;

        if(cur % tmp < R) cur += (R-cur%tmp);
        prev = D;

    }
    cur += (L-prev);
    cout << cur;
    return 0;
}

 

기본적으로는 신호등 간의 거리를 계산해 누적하며 더해준다.

이때 빨간불 + 초록불의 한 사이클을 파악하여, 해당 사이클 내에 빨간 불이 걸리는 지 아닌지를 체크해 대기 시간을 추가로 더한다.

마지막 신호등에서 끝 거리까지의 차이를 구해 남은 거리를 추가로 더해준다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함