728x90
https://www.acmicpc.net/problem/1654
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
#include <stdio.h> // 랜선 자르기
#include <stdlib.h>
int arr[10001] = { 0, };
long long binary_search(int max, int k, int n)
{
long long left = 1, right = max, cut_max = 0;
long long mid;
while (left <= right)
{
mid = (left + right) / 2;
int cnt = 0;
for (int i = 0; i < k; i++)
{
cnt += arr[i] / mid;
}
if (cnt >= n)
{
if (cut_max < mid)
cut_max = mid;
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return cut_max;
}
int main()
{
int k, n;
scanf("%d %d", &k, &n);
int max = 0;
for (int i = 0; i < k; i++)
{
scanf("%d", &arr[i]);
if (arr[i] > max)
max = arr[i];
}
printf("%lld", binary_search(max, k, n));
return 0;
}
MEMO
-- left + right 가 int형을 벗어날 수 있기 때문에 left, right, mid, cut_max를 long long 으로 선언
!! 항상 자료형 범위 생각하기 !!
728x90
728x90
'백준[baekjoon] > C언어' 카테고리의 다른 글
백준(baekjoon) [C] - 2110번: 공유기 설치 (0) | 2023.02.13 |
---|---|
백준(baekjoon) [C] - 1149번: RGB거리 (0) | 2023.02.12 |
백준(baekjoon) [C] - 2805번: 나무 자르기 (0) | 2023.02.11 |
백준(baekjoon) [C] - 6588번: 골드바흐의 추측 (0) | 2023.02.11 |
백준(baekjoon) [C] - 2417번: 정수 제곱근 (0) | 2023.02.10 |