티스토리 뷰
문제 링크 : 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;
}
기본적으로는 신호등 간의 거리를 계산해 누적하며 더해준다.
이때 빨간불 + 초록불의 한 사이클을 파악하여, 해당 사이클 내에 빨간 불이 걸리는 지 아닌지를 체크해 대기 시간을 추가로 더한다.
마지막 신호등에서 끝 거리까지의 차이를 구해 남은 거리를 추가로 더해준다.
'백준 > 실버' 카테고리의 다른 글
[백준 11502번] 세 개의 소수 문제 (C++) (0) | 2025.06.26 |
---|---|
[백준 24039번] 2021은 무엇이 특별할까? (0) | 2025.06.24 |
[백준 2622번] 삼각형만들기 (C++) (0) | 2025.06.17 |
[백준 13251번] 조약돌 꺼내기 (C++) (0) | 2025.06.16 |
[백준 1124번] 언더프라임 (C++) (0) | 2025.06.15 |