Search
Duplicate

선입 선출 스케줄링

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

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