파이썬으로 부시자! Python with Coreenee

프로그래머스 - 이분탐색 - 징검다리

문제

스크린샷 2020-05-13 오후 11 34 50

입력

스크린샷 2020-05-13 오후 11 34 58


나의 처음 코드

오늘부터는 아이패드 프로가 생겼기 때문에, 사진으로. 대체!

스크린샷 2020-05-13 오후 11 34 14


def solution(distance, rocks, n):
answer = 0
left = 1
right = distance
rocks.sort()
while left <= right:
    mid = (left + right) // 2
    pre_rock = 0
    num_of_rock = 0
    m_min = 1000000001
    for rock in rocks:
        if rock - pre_rock < mid:
            num_of_rock += 1
        else:
            m_min = min(m_min, rock-pre_rock)
            pre_rock = rock
            
    if num_of_rock > n:
        right = mid - 1
    else:
        answer = m_min
        left = mid + 1

return answer

어떠한 기준을 잡고, 이분탐색을 하느냐가 큰 관건이다. 규칙을 찾고, 기준을 찾으려는 연습과! for문적인 생각을 버려야할 것 같다.