알고리즘 공부/파이썬(Python)

백준 2980번 도로와 신호등 파이썬

마달랭 2024. 6. 25. 17:09
반응형

리뷰

점화식을 만드는데 애먹었지만 해당 부분을 제외하면 쉬웠다.

문제 풀이

도로의 길이 + 1 만큼의 길이를 가진 배열을 생성해 준다.

도로에 진입한 순간 사이클이 진행되므로 while문의 초반에 시간을 1더해준다.

시간을 빨간불 유지시간 + 초록불 유지시간으로 나눈 나머지가 빨간불 유지시간 보다 적다면 빨간불이다. 길을 0으로 변경시켜 이동을 막는다. 만약 반대라면 길을 1로 변경하여 이동할 수 있게 처리해 준다.

참고 사항

도로의 길이와 신호등의 정보의 범위가 좁아서 망정이지 더 길었다면 통과하지 못할 것 같다. 코드 최적화가 필요해 보임

정답 코드

def q2980():
    # 백준 2980번 도로와 신호등 파이썬
    n, l = map(int, input().split())
    dp = [1] * (l + 1)
    lst = [list(map(int, input().split())) for _ in range(n)]
    time = 0
    index = 1
    while index <= l:
        time += 1
        for i in lst:
            if time % (i[1] + i[2]) < i[1]:
                dp[i[0]] = 0
            else:
                dp[i[0]] = 1
        if dp[index] == 1:
            index += 1
    print(time)
q2980()

 

728x90
반응형