알고리즘/프로그래머스문제풀이

[Python/프로그래머스]입국심사 _이분탐색

개발자 덕구🐾 2022. 6. 14. 18:41
728x90

 

 

 

 

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

 

코딩테스트 연습 - 입국심사

n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한

programmers.co.kr

 

 

 


 

1. left와 right 값 정의

2. left와 right을 적절히 자르고 최적의 mid값을 찾도록 코드를 만든다. 

 

 

 

 

코드 : 

 

def solution(n, times):
    answer = 0
    left, right = 1, max(times) * n 
    # right은 가장 오래걸리는 심사관에게 모두 받을 경우의 시간
    
    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 
        else : # 심사한 사람이 더 적다 -> 시간을 늘린다. 
            left = mid +1 
            
    
    return answer

 

 

배운점 : 

 

 

 

1. 이분탐색의 구현 

 

겨울에 진행했던 스터디를 괜히 한건 아닌가보다.

새록새록 기억난다. 

 

 

 


 

 

 

참고 블로그 : 

 

 

https://sohee-dev.tistory.com/123

 

[프로그래머스] 입국심사 (Python) / 이분탐색

문제 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시

sohee-dev.tistory.com

 

 

 

복습 : 

 

20220618

✅ 20220621

✅ 20220623

✅ 20220624

✅ 20220626

반응형