728x90
- 문제 설명
처리해야 할 동일한 작업이 n 개가 있고, 이를 처리하기 위한 CPU가 있습니다.
이 CPU는 다음과 같은 특징이 있습니다.
- CPU에는 여러 개의 코어가 있고, 코어별로 한 작업을 처리하는 시간이 다릅니다.
- 한 코어에서 작업이 끝나면 작업이 없는 코어가 바로 다음 작업을 수행합니다.
- 2개 이상의 코어가 남을 경우 앞의 코어부터 작업을 처리 합니다.
처리해야 될 작업의 개수 n과, 각 코어의 처리시간이 담긴 배열 cores 가 매개변수로 주어질 때, 마지막 작업을 처리하는 코어의 번호를 return 하는 solution 함수를 완성해주세요.
- 제한 사항
- 코어의 수는 10,000 이하 2이상 입니다.
- 코어당 작업을 처리하는 시간은 10,000이하 입니다.
- 처리해야 하는 일의 개수는 50,000개를 넘기지 않습니다.
- 입/출력
n | cores | result |
6 | [1,2,3] | 2 |
- 코드
def solution(n, cores):
if n <= len(cores):
return n
else:
n -= len(cores)
left = 1
right = max(cores)*n
while left < right:
mid = (left + right) // 2
process = 0
for core in cores:
process += mid // core
if process >= n:
right = mid
else:
left = mid+1
for core in cores:
n -= (right-1) // core
for i in range(len(cores)):
if right % cores[i] == 0:
n -= 1
if n == 0:
return i+1
- 출처
https://programmers.co.kr/learn/courses/30/lessons/12920?language=python3#
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스 거리두기 확인하기 (python, 파이썬) (0) | 2021.08.08 |
---|---|
프로그래머스 숫자 문자열과 영단어 (python, 파이썬) (0) | 2021.08.08 |
프로그래머스 문자열 압축 (python, 파이썬) (0) | 2021.06.01 |
프로그래머스 길 찾기 게임 (python, 파이썬) (0) | 2021.05.26 |
프로그래머스 자동 완성 (python, 파이썬) (4) | 2021.05.24 |
댓글