https://school.programmers.co.kr/learn/courses/30/lessons/340212
def solution(diffs, times, limit):
start = 1
end = max(diffs)
answer = end
while start<end:
mid = int((start+end)/2)
total = times[0]
for t in range(1,len(diffs)):
k=0
if mid<diffs[t]:
k = diffs[t]-mid
total += (times[t]+times[t-1])*k + times[t]
if total<=limit:
end=mid
answer = mid
else:
start = mid+1
return answer
처음에는 1부터 계산한뒤 조건에 만족못할경우 1씩 키워가면서 했는데 역시나 시간 초과가 난다.
이진탐색으로 탐색 속도를 줄여 통과했다.