[프로그래머스] 퍼즐 게임 챌린지

JinUk Lee·2024년 10월 10일
0

프로그래머스

목록 보기
48/48

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씩 키워가면서 했는데 역시나 시간 초과가 난다.

이진탐색으로 탐색 속도를 줄여 통과했다.

profile
개발자 지망생

0개의 댓글