https://programmers.co.kr/learn/courses/30/lessons/12920
이진탐색을 활용해야 하는 문제였다.
비슷한 문제를 풀었었는데 떠올리지 못했다.
def solution(n,cores):
if n <= len(cores):
return n
n -= len(cores)
left = 1
right = max(cores)*n
while left < right:
mid = (left+right)//2
work = 0
for core in cores:
work += mid//core
if work >= 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
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 호텔 방 배정(Python) (0) | 2022.02.05 |
---|---|
[프로그래머스] 미로 탈출(Python) (0) | 2022.02.04 |
[프로그래머스] 사라지는 발판(Python) (0) | 2022.01.30 |
[프로그래머스] 파괴되지 않은 건물(Python) (0) | 2022.01.30 |
[프로그래머스] 양과 늑대(Python) (0) | 2022.01.28 |
댓글