티스토리 뷰
문제 링크입니다 : https://www.acmicpc.net/problem/1654
1654번: 랜선 자르기
첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그
www.acmicpc.net
이분 탐색 문제!
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
int K, N;
vector<ll> cable;
int main() {
cin >> K >> N;
cable.resize(K);
ll low = 0, high = 0;
for(int i = 0; i < K; i++) {
cin >> cable[i];
if(cable[i] > high) {
high = cable[i];
}
}
ll mid, result = 1;
while(low <= high) {
mid = (low + high) / 2;
if(mid == 0) {
break;
}
ll cableNum = 0;
for(int i = 0; i < K; i++) {
cableNum += cable[i] / mid;
}
if(cableNum >= N) {
low = mid + 1;
result = mid;
} else {
high = mid - 1;
}
}
cout << result;
return 0;
}
개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
백준 - 15732 도토리 숨기기 (0) | 2020.08.19 |
---|---|
백준 - 16434 드래곤 앤 던전 (0) | 2020.08.19 |
백준 - 6236 용돈 관리 (0) | 2020.08.18 |
백준 - 2343 기타 레슨 (0) | 2020.08.18 |
백준 - 2512 예산 (0) | 2020.08.14 |
댓글