코딩문제풀이/프로그래머스

[Python] 징검다리

코딩하는 포메라니안 2021. 9. 4. 21:56

1. 문제

 

 

 

2. 풀이 과정

def solution(distance, rocks, n):
    if len(rocks) == n: #전체를 제거해야할 경우
        return distance
    
    gap = []
    rocks.sort()
    rocks.append(distance)
        
    def bsearch(s, e):
        while s <= e:
            m = (s+e)//2 #최솟값 중 최대가 m이라면
            #돌 몇 개를 빼야하는지 count
            c = 0
            prev = 0
            for rock in rocks:
                if rock - prev < m:
                    c += 1
                else:
                    prev = rock
                
            if c > n:
                e = m - 1
            else:
                s = m + 1
        return e
    
    return bsearch(1, distance)

 

'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글

[Python] 오픈채팅방  (0) 2021.09.08
[Python] 방의 개수  (0) 2021.09.05
[Python] 순위  (0) 2021.09.03
[Python] 가장 먼 노드  (0) 2021.09.02
[Python] 입국심사  (0) 2021.09.01