[코딩테스트/프로그래머스/Python]입국심사

Enter·2021년 8월 3일
0

코딩테스트

목록 보기
26/68

💡생각

이분탐색으로 이 문제를 어떻게 풀어야하는지 감이 안잡혀서 다른 사람의 코드를 보았음.



⏬다른사람의 코드

코드를 봐도 잘 이해하기 어려웠음...
‘이분 탐색의 범위는 무엇으로 할지’ 와 ‘이분 탐색의 기준을 무엇으로 할지’를 잡는게 중요하다고 함.

🔗풀이 참고
https://sohee-dev.tistory.com/123

def solution(n, times):
    answer = 0
    # right는 가장 비효율적으로 심사했을 때 걸리는 시간
    # 가장 긴 심사시간이 소요되는 심사관에게 n 명 모두 심사받는 경우이다.
    left, right = 1, max(times) * n
    while left <= right:
        mid = (left+ right) // 2
        people = 0
        for time in times:
            # people 은 모든 심사관들이 mid분 동안 심사한 사람의 수
            people += mid // time
            # 모든 심사관을 거치지 않아도 mid분 동안 n명 이상의 심사를 할 수 있다면 반복문을 나간다.
            if people >= n:
                break
        
        # 심사한 사람의 수가 심사 받아야할 사람의 수(n)보다 많거나 같은 경우
        if people >= n:
            answer = mid
            right = mid - 1
        # 심사한 사람의 수가 심사 받아야할 사람의 수(n)보다 적은 경우
        elif people < n:
            left = mid + 1
            
    return answer










🔗프로그래머스 - 입국심사
https://programmers.co.kr/learn/courses/30/lessons/43238

profile
Cherish the moment :)

0개의 댓글