본문 바로가기
Programming/Programmers

[프로그래머스] 징검다리(Python)

by 데이터현 2021. 8. 12.

 

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

 

코딩테스트 연습 - 징검다리

출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가

programmers.co.kr

def solution(distance, rocks, n):
        result =0
        rocks.extend([0,distance]) # 0 distance 추가
        rocks.sort() # 정렬
        start, end = 0, distance

        while start<=end: # 이분탐색
            mid = (start+end)//2 
            temp=rocks[0]
            cnt=0
            for i in rocks:
                if i-temp>=mid:
                    temp=i
                else:
                    cnt+=1

            if cnt>n+1:
                end=mid-1
            else:
                start = mid+1
                if mid>result:                    
                    result=mid
                    
        return result

 

댓글