상세 컨텐츠

본문 제목

[백준_2980] 도로와 신호등_python

자료구조 알고리즘/백준

by young1403 2022. 3. 29. 19:03

본문

 

2980번: 도로와 신호등

상근이는 트럭을 가지고 긴 일직선 도로를 운전하고 있다. 도로에는 신호등이 설치되어 있다. 상근이는 각 신호등에 대해서 빨간 불이 지속되는 시간과 초록 불이 지속되는 시간을 미리 구해왔

www.acmicpc.net

상근이는 트럭을 가지고 긴 일직선 도로를 운전하고 있다. 도로에는 신호등이 설치되어 있다. 상근이는 각 신호등에 대해서 빨간 불이 지속되는 시간과 초록 불이 지속되는 시간을 미리 구해왔다. (빨간색과 초록색 불빛은 무한히 반복된다)

상근이의 트럭이 도로에 진입했을 때, 모든 신호등의 색상은 빨간색이고, 사이클이 막 시작한 상태이다. 상근이는 1초에 1미터를 움직인다. 신호등의 색상이 빨간색인 경우에는 그 자리에서 멈추고 초록색으로 바뀔 때까지 기다린다.

상근이가 도로의 끝까지 이동하는데 걸리는 시간을 구하는 프로그램을 작성하시오. 도로의 시작은 0미터이고, 끝은 L미터인 지점이다.

입력

첫째 줄에 신호등의 개수 N과 도로의 길이 L이 주어진다. (1 ≤ N ≤ 100, 1 ≤ L ≤ 1000)

다음 N개 줄에는 각 신호등의 정보 D, R, G가 주어진다. (1 ≤ D < L, 1 ≤ R ≤ 100, 1 ≤ G ≤ 100) D는 신호등의 위치이며, R과 G는 빨간색, 초록색이 지속되는 시간이다.

신호등은 D가 증가하는 순서로 주어지며, 같은 위치에 있는 신호등이 두 개 이상 있는 경우는 없다.

출력

첫째 줄에 상근이가 도로의 끝까지 이동하는 데 걸리는 시간을 출력한다.

문제풀이

 걸리는 시간을 출력하는 문제이다. 신호등 위치 d까지 걸린 시간을 알기 위해서는 해당 d위치에 있을 때 현재 흐르고 있는 시간이

현재시간%(r+g)가 r범위에 포함되면 빨간불범위안이다. 그래서 r - 현재시간%(r+g) 은 해당 위치에서 빨간불을 기다리는 시간이므로

그만큼을 time에 더해주고, 다음 신호등으로 가기위해 다음 신호등 위치 - 현재 신호등 위치의 차이만큼 현재시간에 더해주면 다음 신호등까지 도달해있게 된다.

그 후 마지막 신호등까지 계산이 끝나면 도로의 길이 - 마지막 신호등 위치의 차이만큼 현재 시간에 더해주면 도로 끝까지 이동하는 데 걸린 시간을 구할 수 있다.

n , l = map(int,input().split())
now = 0
time = 0
for _ in range(n):
    d, r, g = map(int,input().split())#위치,빨간불,초록불
    time += d-now
    now = d
    if time % (r+g) <= r :
        time += r - time % (r+g)
time += l-now
print(time)

'자료구조 알고리즘 > 백준' 카테고리의 다른 글

[백준_3187] 양치기 꿍  (0) 2022.04.02
[백준_3184] 양_python  (0) 2022.03.31
[백준_14719] 빗물_python  (0) 2022.03.28
[백준_1991] 트리순회_python  (0) 2022.03.24
[백준_2503] 숫자야구_Py  (0) 2022.03.23

관련글 더보기

댓글 영역