반응형
https://programmers.co.kr/learn/courses/30/lessons/43237
코딩테스트 연습 - 예산 | 프로그래머스
국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것입니다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있습니다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정합니다. 1. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정합니다. 2. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을
programmers.co.kr

이 문제를 처음 접했을 때에는 이분탐색을 쓰지 않아도 해결할 수 있었다. budget 최댓값에서 1씩 줄여가며 조건에 맞을 때까지 계산하면 효율성도 통과가 됐었던 걸로 기억한다.
오랜만에 다시 들어가보니 테스트케이스가 바뀌었다고 해서 이분탐색으로 풀었다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def solution(budgets, M): | |
mins, maxs = 0, max(budgets) | |
answer = 0 | |
while mins <= maxs: | |
mid = (mins + maxs) // 2 | |
temp = [i if i < mid else mid for i in budgets] | |
if sum(temp) > M: | |
maxs = mid - 1 | |
elif sum(temp) <= M: | |
answer = mid | |
mins = mid + 1 | |
return answer |
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 백준 17281. ⚾ (2) | 2020.02.11 |
---|---|
[Python] 백준 1021. 회전하는 큐 (0) | 2020.02.10 |
[Python] 백준 15997. 승부 예측 (카카오 코드페스티벌 2018) (0) | 2020.02.07 |
[Python] 백준 1976. 여행 가자 (0) | 2020.02.06 |
[Python] 백준 17472. 다리만들기2 (0) | 2020.02.04 |