DataScience trainee

Programmers - 징검다리

징검다리


개요

  • 이번 포스팅은 파이썬 코딩테스트 연습문제 풀이입니다.
  • Programmers 에 공개된 예제이며 링크는 아래와 같습니다.

https://programmers.co.kr/learn/courses/30/lessons/43236


코드

def solution(distance, rocks, n):
    rocks = sorted(rocks)
    lo = 0
    hi = distance
    answer = 0
    while lo <= hi:
        mi = int((lo + hi) / 2)
        prev = 0
        cnt = 0
        for rock in rocks:
            if mi > (rock - prev):
                cnt += 1
            else:
                prev = rock
        if mi > (distance - prev):
            cnt += 1

        if cnt > n:
            hi = mi - 1
        else:
            lo = mi + 1
            answer = mi
    

    return answer

마치며

이번 포스팅은 Programmers에 존재하는 파이썬 코딩테스트 이분탐색 예제 중 레벨 4에 해당하는 문제입니다.