16401번: 과자 나눠주기
첫째 줄에 조카의 수 M (1 ≤ M ≤ 1,000,000), 과자의 수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 과자 N개의 길이 L1, L2, ..., LN이 공백으로 구분되어 주어진다. 과자의 길이는 (1 ≤ L1, L2, ..., LN
www.acmicpc.net
아이디어:
막대 과자의 길이를 이분 탐색하여 조카 n명에게 줄 수 있는 과자 길이의 최댓값을 구한다.
import sys
m, n = map(int, sys.stdin.readline().split())
arr = list(map(int, sys.stdin.readline().split()))
high = 1000000000
low = 1
ans = 0
while (high>=low):
mid = (high+low)//2
num = 0
for i in arr:
num += i//mid
if (num>=m):
ans = mid
low = mid + 1
else:
high = mid - 1
print(ans)
'알고리즘💻 > 이분탐색&정렬&분할정복' 카테고리의 다른 글
BOJ 1026번: 보물 (0) | 2021.01.29 |
---|---|
BOJ 2470번: 두 용액 (0) | 2021.01.25 |
BOJ 2343번: 기타 레슨 (0) | 2021.01.25 |
BOJ 3079번: 입국심사 (0) | 2021.01.25 |
BOJ 1920번: 수 찾기 (0) | 2021.01.25 |