문제링크
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
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level3]정수 삼각형 -python (0) | 2021.12.31 |
---|---|
[프로그래머스][level3] N으로 표현 -python (0) | 2021.12.31 |
[프로그래머스][level3] 여행경로 -python (0) | 2021.12.31 |
[프로그래머스][level3] 단어 변환 -python (0) | 2021.12.31 |
[프로그래머스][level3] 네트워크 -python (0) | 2021.12.29 |