[Python][프로그래머스][Level3] 징검다리 건너기

[Python][프로그래머스][Level3] 징검다리 건너기

코드

def solution(stones, k):    
    start,end=0,max(stones)
    while start<=end:
        middle=(start+end)//2
        cnt=cnt2=0
        for stone in stones:
            if stone-middle<=0:
                cnt2+=1
            else:
                cnt=max(cnt,cnt2)
                cnt2=0
        else:
            cnt=max(cnt,cnt2)
        if cnt>=k:
            end=middle-1
        else:
            start=middle+1
    
    return start

이분탐색으로 풀었다.

연속으로 middle 보다 작은 stone 에 대해서 count 해주고

middle 보다 큰 stone이 나온다면 count를 중간 저장해준다.

그렇게 알맞은 middle 값이 나올 때까지 반복한다.

Discussion and feedback