https://www.acmicpc.net/problem/2980
cnt
cnt
에 먼저 signals[0].d
를 더하고, cnt % (R+G)
를 구하여서 빨간불인지 초록불인지 체크cnt
에 더하고 초록불이면 패스signals[1].d - signals[0].d
를 더함signals[1]
에 대해 빨간불, 초록불 체크cnt
에 더하고 초록불이면 패스cnt
에 l - signals[1].d
를 더함위의 과정에서 반복적으로 나타내는 부분을 반복문으로 작성
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static class Signal {
int d;
int r;
int g;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken());
int cnt = 0;
Signal[] signals = new Signal[n];
for (int i = 0; i < n; i++) {
signals[i] = new Signal();
StringTokenizer tmp = new StringTokenizer(br.readLine());
signals[i].d = Integer.parseInt(tmp.nextToken());
signals[i].r = Integer.parseInt(tmp.nextToken());
signals[i].g = Integer.parseInt(tmp.nextToken());
}
int tmp;
for (int i = 0; i < n; i++) {
cnt += i == 0 ? signals[0].d : signals[i].d - signals[i-1].d;
tmp = cnt % (signals[i].g + signals[i].r);
if (tmp < signals[i].r)
cnt += signals[i].r - tmp;
}
cnt += l - signals[n-1].d;
System.out.println(cnt);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static class Signal {
private int d;
private int r;
private int g;
public Signal(int d, int r, int g) {
this.d = d;
this.r = r;
this.g = g;
}
public int getD() {
return d;
}
public int getR() {
return r;
}
public int getG() {
return g;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken());
int cnt = 0;
int d, r, g;
Signal[] signals = new Signal[n];
for (int i = 0; i < n; i++) {
StringTokenizer tmp = new StringTokenizer(br.readLine());
d = Integer.parseInt(tmp.nextToken());
r = Integer.parseInt(tmp.nextToken());
g = Integer.parseInt(tmp.nextToken());
signals[i] = new Signal(d, r, g);
}
int tmp;
for (int i = 0; i < n; i++) {
cnt += i == 0 ? signals[0].getD() : signals[i].getD() - signals[i-1].getD();
tmp = cnt % (signals[i].getG() + signals[i].getR());
if (tmp < signals[i].getR())
cnt += signals[i].getR() - tmp;
}
cnt += l - signals[n-1].getD();
System.out.println(cnt);
}
}