Algorithm: 이분 탐색 (Binary Search)

calico·2025년 8월 12일

Algorithm

목록 보기
8/16

1. [프로그래머스] 입국 심사

https://school.programmers.co.kr/learn/courses/30/lessons/43238



def solution(n, times):
    answer = 0
    
    #6명
    #7분, 10분 (2개)
    left, right = min(times), max(times) * n
    while left <= right:
        mid = (left + right ) // 2
        people = 0
        for time in times:
            people += mid // time
            if people >= n:
                break
        if people >= n:
            answer = mid
            right = mid - 1
        elif people < n:
            left = mid + 1
    
    return answer



2. [프로그래머스] 징검다리

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




def solution(distance, rocks, n):

    rocks.sort()
    left, right = 1, distance
    answer = 0
    
    def feasible(mid):
        removed = 0
        prev = 0
        for x in rocks:
            if x - prev < mid:
                removed += 1
                if removed > n:
                    return False
            else:
                prev = x
        
        if distance - prev < mid:
            removed += 1
        return removed <= n

    while left <= right:
        mid = (left + right) // 2
        if feasible(mid):
            answer = mid
            left = mid + 1
        else:
            right = mid - 1
    
    return answer
                    

    



profile
All views expressed here are solely my own and do not represent those of any affiliated organization.

0개의 댓글