티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/340212
풀이
- 이진탐색
def solution(diffs, times, limit):
def calc(level):
time = 0
for j in range(len(diffs)):
if diffs[j] <= level:
time += times[j]
else:
time += (diffs[j] - level) * (times[j] + times[j-1]) + times[j]
if time > limit:
return False
if limit >= time:
return True
return False
if len(diffs) == 1:
return 1
start, end, mid = 1, max(diffs), 0
while(start <= end):
mid = (start + end) // 2
if calc(mid):
end = mid - 1
else:
start = mid + 1
if calc(mid):
return mid
else:
return start
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 미로 탈출 - Python (0) | 2024.10.19 |
---|---|
[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기 - Python (0) | 2024.10.13 |
[프로그래머스] [1차] 프렌즈4블록 - Python (0) | 2022.02.09 |
[프로그래머스] N-Queen - Python (0) | 2022.02.07 |
[프로그래머스] 후보키 - Python (0) | 2021.11.26 |