요약하자면 화랑이 감시구간에 진입했을 때 경비가 근무 중인가 휴식 중인가를 판단하면 끝인 문제이다.
화랑이 지나가야 하는 길을 road라는 리스트로 표현했을 때 감시 구간에 경비의 인덱스를 넣어주면 편하게 찾아낼 수 있다. 나머지 road의 요소는 음수로 설정해놓기에 인덱스와 구분이 가능하다.
def solution(distance, scope, times):
hw_pos = 0
road = [-1] * (distance + 1)
idx = 0
for x,y in scope:
big = max(x, y)
small = min(x, y)
road[small : big + 1] = [idx] * (big - small + 1)
idx += 1
while True:
if road[hw_pos] >= 0:
k,v = times[road[hw_pos]]
flag = hw_pos % (k + v)
if 0 < flag <= k:
break
if hw_pos == distance:
break
hw_pos += 1
return hw_pos