https://www.acmicpc.net/problem/2980
2980번: 도로와 신호등
상근이는 트럭을 가지고 긴 일직선 도로를 운전하고 있다. 도로에는 신호등이 설치되어 있다. 상근이는 각 신호등에 대해서 빨간 불이 지속되는 시간과 초록 불이 지속되는 시간을 미리 구해왔
www.acmicpc.net
📝문제
📝풀이
총 시간을 (빨간불+파란불) 로 % 연산을 하여 현재 신호등이 빨간불인지 파란불인지 구간을 파악해야한다
구간을 section 이라고 했을 때 빨간불 지속시간 보다 작으면 => 빨간불 구간
or => 파란불 구간
기다리는 시간을 더해주고 다음위치로 이동할 때 이동거리 만큼 총 시간에 더해주는 식으로 하면 된다
import static java.util.Arrays.*;
import static java.util.stream.Collectors.*;
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] input = stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt).toArray();
int n = input[0], len = input[1], curPos = 0, time = 0;
for (int i = 0; i < n; i++) {
int[] arr = stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt).toArray();
// arr = { 위치, 빨간불, 파란불}
time += arr[0] - curPos; // 다음 위치 까지 가는데 걸리는 시간
curPos = arr[0]; // 위치 이동
int section = time % (arr[1] + arr[2]); // 신호등 사이클 확인
if (section < arr[1]) // 빨간불 구간
time += arr[1] - section;
}
// 남은 신호등 거리 계산 포함
System.out.println(time + len - curPos);
}
}
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [1032] 명령 프롬프트 JAVA (0) | 2022.04.12 |
---|---|
[BOJ] 백준 [1445] 일요일 아침의 데이트 JAVA (0) | 2022.04.08 |
[BOJ] 백준 [8979] 올림픽 JAVA (0) | 2022.04.07 |
[BOJ] 백준 [13460] 구슬탈출2 JAVA (0) | 2022.04.07 |
[BOJ] 백준 [18405] 경쟁적 전염 JAVA (0) | 2022.04.05 |