문제 설명 및 제한사항
아이디어 및 해결 방법
코드
def solution(n, times):
# 어쨌든 각 심사관은 안 쉬고 꽉꽉 채워서 받아야 한다.
# 따라서 시간이 T 주어진다면, 전체 처리 가능한 사람 수는
# sum(T//t for t in times) 이다.
# 이 값이 n이 되는 가장 작은 T를 0~n*T 범위 내에서 구하자.
times.sort()
l, r = 0, n * times[-1]
while l < r:
mid = (l + r) // 2
p = sum(mid//t for t in times)
# 처리 가능한 사람 수가 더 많거나 같으면 시간을 줄여본다.
if p >= n:
l, r = l, mid
# 처리 가능한 사람 수가 적어서, 시간이 더 필요하다.
else:
l, r = mid + 1, r
return l
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges