본문 바로가기
프로그래머스/Lv.3

입국심사 - Python, 이진탐색

by 아찌방 2025. 4. 6.

 

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

코드 & 풀이

 

def solution(n, times):
    left = 1
    right = max(times) * n
    
    answer = right
    
    while left <= right:
        mid = (left + right) // 2
        total = sum(mid // time for time in times)
        
        if total >= n:
            answer = mid
            right = mid - 1
        else:
            left = mid + 1
    
    return answer

 

 

right를 최악으로 가정

 

최악 = 심사가 가장 오래걸리는 심사관에게 모두가 검사를 받는 경우

 

그 후 이분 탐색을 시작합니다.

 

mid 는 이름 그대로 중간값입니다.

 

우리는 이제 이 중간값을 기준으로 탐색 범위를 줄여거는 겁니다.

 

total 은 특정 시간에 n명을 다 심사할 수 있는 지를 파악하는 데 사용합니다.

 

total 이 n보다 크다면 이 시간 안에 심사가 가능하다는 의미이고,

 

작다면 시간이 부족하다는 겁니다.

 

 

 

 

다음에 또 봐요

 

728x90

'프로그래머스 > Lv.3' 카테고리의 다른 글

억억단을 외우자 - Python  (0) 2025.02.21
부대복귀 - Python, BFS  (0) 2025.02.17
고고학 최고의 발견 - Python, product  (1) 2025.02.10
N으로 표현 - Python, DP  (0) 2024.11.22
네트워크 - Python, DFS, BFS, Union_find  (0) 2024.11.21