반응형
이분 탐색으로 풀 수 있는 예산 문제 입니다.
가능한 예산 중 최대값을 찾기위해 시작 값, 끝 값을 나누어 중간 값으로 범위를 확장, 축소하여 문제를 풀이했습니다.
문제 풀이(파이썬)
N = int(input())
req = list(map(int, input().split()))
M = int(input())
lt = 1
rt = max(req)
res = 0
while lt <= rt:
mid = (lt+rt)//2
res_tmp = 0
for r in req:
if r > mid:
res_tmp += mid
else:
res_tmp += r
if res_tmp > M:
rt = mid-1
else:
res = mid
lt = mid+1
print(res)
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 정렬 - 가장 큰 수(파이썬 문제 풀이) (0) | 2021.03.18 |
---|---|
[프로그래머스] 정렬 - K번째 수(파이썬 문제 풀이) (0) | 2021.03.17 |
[ BOJ ] 백준 2805 - 나무 자르기(파이썬 문제 풀이) (0) | 2021.03.14 |
[ BOJ ] 백준 2750 - 수 정렬하기(파이썬 문제 풀이) (0) | 2021.03.13 |
[ Algorithm ] 온라인 코딩 테스트 준비하기(온라인 코딩 테스트 사이트, 온라인 개발 환경, 복잡도란) (0) | 2020.10.21 |
댓글