프로그래머스/LV2
[프로그래머스 Lv2, python] - [PCCP 기출문제] 2번/ 퍼즐 게임 챌린지
chyam_eun
2025. 4. 1. 16:25
https://school.programmers.co.kr/learn/courses/30/lessons/340212
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(diffs, times, limit):
min_level = 1
max_level = max(diffs)
res = max_level
while min_level < max_level: # 이진탐색
mid_level = (min_level+max_level)//2
time_prev = times[0] # 이전 퍼즐 걸리는 시간
total_time = 0 # 전체 퍼즐 걸리는 시간
for i in range(len(diffs)):
# diff <= level 일때 퍼즐 틀리지x time_cur 시간 사용하여 해결
if diffs[i] <= mid_level:
total_time += times[i]
# diff > level 일때 diff - level 번 틀림. (time_cur + time_prev)*틀린 횟수 + time_cur
else:
total_time += (time_prev + times[i]) * (diffs[i] - mid_level) + times[i]
time_prev = times[i]
if total_time > limit: # limit 보다 크면 숙련도가 더 높아야함
min_level = mid_level+1
else:
max_level = mid_level
res = min(res,mid_level) # 더 낮은 숙련도
return res