[백준/파이썬] 2980번 도로와 신호등 풀이

업데이트:



문제 정보


풀이

문제

신호등 상태를 따라가며 도로 길이 L 끝까지 이동할 때 총 소요 시간을 구하는 문제입니다.

코드

import sys; read = sys.stdin.readline

n, l = map(int, read().split())
lamps = [list(map(int, read().split()))+[False, 0] for _ in range(n)]

t = s = 0
i = 0
while s < l:
    if i < n and lamps[i][0] == s and lamps[i][4] == 1:
        s += 1
        i += 1
    elif i >= n or lamps[i][0] > s:
        s += 1
    t += 1
    for lamp in lamps:
        lamp[3] += 1
        if lamp[3] >= lamp[lamp[4] + 1]:
            lamp[3] = 0
            lamp[4] = (lamp[4] + 1) % 2
print(t)

설명

현재 위치에서 전진 가능한지 확인한 뒤 시간을 1초씩 증가시키고, 모든 신호등의 내부 상태를 함께 갱신하는 방식으로 시뮬레이션합니다.



댓글남기기