문제 설명 및 제한사항
아이디어 및 해결 방법
코드
def solution(n, cores):
# 시간 0때는 모든 코어에 작업이 들어가야 하므로,
# 우선 작업 개수에서 core 개수만큼 빼고 시작해봅니다.
if n < len(cores):
return n
n -= len(cores)
l, r = 0, max(cores) * n
while l < r:
mid = (l+r) // 2
s, skip = 0, False
for processtime in cores:
s += mid // processtime
if s >= n:
l, r = l, mid
skip = True
break
if skip:
continue
if s > n:
l, r = l, mid
else:
l, r = mid+1, r
T, c = l, 0
for id, processtime in enumerate(cores, 1):
c += (T-1) // processtime
if c == n:
return id
for id, processtime in enumerate(cores, 1):
if T % processtime == 0:
c += 1
if c == n:
return id
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges