코딩 테스트/Level 3

선입 선출 스케줄링

컴닥 2022. 9. 4. 10:29
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/12920

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

파이썬

무지성 코딩. 

def solution(n, cores):
    board = [0 for _ in cores]
    while True:
        for i, v in enumerate(cores):
            if board[i] == 0:
                n -= 1
                board[i] = v
                if n == 0:
                    return i + 1
        for i in range(len(cores)):
            board[i] -= 1

 

이분(이진) 탐색

파라메트릭 서치

def solution(n, cores):
    if n < len(cores):
        return n
    n -= len(cores)
    left, right = 1, max(cores) * n
    while left < right:
        mid = (left + right) // 2
        works = sum(mid // time for time in cores)
        if works >= n:
            right = mid
        else:
            left = mid + 1
    n -= sum((right - 1) // time for time in cores)
    for i, time in enumerate(cores):
        if right % time == 0:
            n -= 1
            if n == 0:
                return i + 1

 

반응형