사용한 알고리즘
알고리즘 설명
- 달팽이는 올라가고 싶다가 생각나는 문제이다.
- 위 문제보다는 정말 간단하다…
- 신호등의 각 위치는 오름차순으로 주어지므로 sort할 필요는 없다
- 알고리즘은 다음과 같다
- 신호등 위치까지 움직인다
- 현재 시간에 기다려야하는 시간을 구한다
- 1,2번을 마지막 신호등까지 반복한다
- 현재 지점에서 L까지 걸어간다.
풀이
// baekjoon 2980 yechan
#include <bits/stdc++.h>
using namespace std;
const int MAX_N=101;
int N, L;
int wait_light(int t, int r, int g) {
t %= (r+g);
if (t < r) return r-t;
return 0;
}
int main() {
scanf("%d%d", &N, &L);
int cur_time=0, cur_pos = 0;
for (int i=0; i<N; i++) {
int D, R, G;
scanf("%d%d%d", &D, &R, &G);
// move pos(D)
cur_time += (D - cur_pos);
cur_pos = D;
// wait light
cur_time += wait_light(cur_time, R, G);
}
if (cur_pos < L) cur_time += L - cur_pos;
printf("%d\n", cur_time);
return 0;
}