cgy12306

[백준 BoJ] 1654 - 랜선 자르기 본문

Algorithm/C++

[백준 BoJ] 1654 - 랜선 자르기

cgy12306 2021. 6. 29. 15:34
// https://www.acmicpc.net/problem/1654
// 랜선 자르기

#include<iostream>
#include<algorithm>
using namespace std;

long long K, N, lan[10001], low, high, mid, res;

bool check(long long length) {
	int cnt = 0;
	for (int i = 0; i < K; i++) {
		cnt += lan[i] / length;
	}
	if (cnt >= N) return true;
	else return false;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	cin >> K >> N;

	for (int i = 0; i < K; i++) {
		cin >> lan[i];
	}

	low = 1;
	high = *max_element(lan, lan+K);

	while (low <= high) {
		mid = (low + high) / 2;
		
		if (check(mid)) {
			if (res < mid) res = mid;
			low = mid + 1;
		}
		else {
			high = mid - 1;
		}
	}
	cout << res << "\n";

}

알고리즘 분류

  • 이분 탐색
  • 매개 변수 탐색

'Algorithm > C++' 카테고리의 다른 글

[백준 BoJ] 1012 - 유기농 배추  (0) 2021.06.30
[백준 BoJ] 2606 - 바이러스  (0) 2021.06.29
[백준 BoJ] 2331 - 반복수열  (0) 2021.04.15
[백준 BoJ] 11724 - 연결 요소의 개수  (0) 2021.04.15
[백준 BoJ] 1978 - 소수 찾기  (0) 2021.04.14
Comments