본문 바로가기

개발/algorithm

[프로그래머스][level3] 입국심사 -python

문제링크

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

 

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

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

programmers.co.kr

 

풀이 

  • 이진탐색 문제를 한동안 안풀었더니 다 까먹은 듯 하다 ..........................
  • 간단한 이진탐색 문제였다 
def solution(n, times):
    answer = 0
    left = 0 
    # 가장 긴 시간이 걸리는 심사관한테 n명이 모두 심사받는 경우가 가장 오래 걸리는 경우 
    right = max(times) * n
    # 이진 탐색 
    while left <= right:
      mid = (left+right) // 2 
      people = 0 

      for time in times:
        # 각 심사관 별 mid동안 심사할 수 있는 사람의 수 
        people += (mid // time)

        # 심사받아야할 사람 수보다 더 많은 사람을 심사할 수 있다면, 시간 줄이기 
        if people >= n:
          answer = mid 
          right = mid -1 
          break 
      
      # 심사받아야할 사람 수보다 적게 심사한다면, 시간 늘리기 
      if people < n :
        left = mid + 1 

    return answer