[알고리즘] 프로그래머스 - 입국심사

June·2021년 3월 1일
0

알고리즘

목록 보기
102/260

프로그래머스 - 입국심사

내 풀이

def get_inspect_count(mid, times):
    total = 0
    for time in times:
        total += mid // time
    return total

def solution(n, times):
    left, right = 0, 1000000000*1000000000
    mid = (left + right) // 2
    answer = 0
    while left <= right:
        inspected_count = get_inspect_count(mid, times)
        if inspected_count >= n:
            answer = mid
            right = mid - 1
        else:
            left = mid + 1

        mid = (left + right) // 2

    return answer

print(solution(6, [7, 10]), 28)

이분탐색 알고리즘을 푼지가 오래되어 구조를 다른 것 안보고 떠올리는데 시간이 조금 걸렸다. 탈출 조건을 어떻게 줘야하나 고민했는데 만약 답을 충족한 상태라면, 그 답을 일단 저장해놓고, 범위를 줄여가며 계속 탐색하는 방식으로 진행하면된다.

0개의 댓글