https://www.acmicpc.net/problem/1654
λ¬Έμ
μ§μμ μκ°μ 보λ΄λ μ€μμμ λ°μ±μμ λΆλ¦μ λ°κ³ κΈν λ¬λ €μλ€. λ°μ±μμ΄ μΊ ν λ μΈ Nκ°μ λμ μ λ§λ€μ΄μΌ νλλ° λ무 λ°λΉ μ μμμ΄μκ² λμμ μ²νλ€.
μ΄λ―Έ μ€μμμ μ체μ μΌλ‘ Kκ°μ λμ μ κ°μ§κ³ μλ€. κ·Έλ¬λ Kκ°μ λμ μ κΈΈμ΄κ° μ κ°κ°μ΄λ€. λ°μ±μμ λμ μ λͺ¨λ Nκ°μ κ°μ κΈΈμ΄μ λμ μΌλ‘ λ§λ€κ³ μΆμκΈ° λλ¬Έμ Kκ°μ λμ μ μλΌμ λ§λ€μ΄μΌ νλ€. μλ₯Ό λ€μ΄ 300cm μ§λ¦¬ λμ μμ 140cm μ§λ¦¬ λμ μ λ κ° μλΌλ΄λ©΄ 20cmλ λ²λ €μΌ νλ€. (μ΄λ―Έ μλ₯Έ λμ μ λΆμΌ μ μλ€.)
νΈμλ₯Ό μν΄ λμ μ μλ₯΄κ±°λ λ§λ€ λ μμ€λλ κΈΈμ΄λ μλ€κ³ κ°μ νλ©°, κΈ°μ‘΄μ Kκ°μ λμ μΌλ‘ Nκ°μ λμ μ λ§λ€ μ μλ κ²½μ°λ μλ€κ³ κ°μ νμ. κ·Έλ¦¬κ³ μλ₯Ό λλ νμ μΌν°λ―Έν° λ¨μλ‘ μ μκΈΈμ΄λ§νΌ μλ₯Έλ€κ³ κ°μ νμ. Nκ°λ³΄λ€ λ§μ΄ λ§λλ κ²λ Nκ°λ₯Ό λ§λλ κ²μ ν¬ν¨λλ€. μ΄λ λ§λ€ μ μλ μ΅λ λμ μ κΈΈμ΄λ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μλ μ€μμμ΄ μ΄λ―Έ κ°μ§κ³ μλ λμ μ κ°μ K, κ·Έλ¦¬κ³ νμν λμ μ κ°μ Nμ΄ μ λ ₯λλ€. Kλ 1μ΄μ 10,000μ΄νμ μ μμ΄κ³ , Nμ 1μ΄μ 1,000,000μ΄νμ μ μμ΄λ€. κ·Έλ¦¬κ³ νμ K β¦ N μ΄λ€. κ·Έ ν Kμ€μ κ±Έμ³ μ΄λ―Έ κ°μ§κ³ μλ κ° λμ μ κΈΈμ΄κ° μΌν°λ―Έν° λ¨μμ μ μλ‘ μ λ ₯λλ€. λμ μ κΈΈμ΄λ 231-1λ³΄λ€ μκ±°λ κ°μ μμ°μμ΄λ€.
μΆλ ₯
첫째 μ€μ Nκ°λ₯Ό λ§λ€ μ μλ λμ μ μ΅λ κΈΈμ΄λ₯Ό μΌν°λ―Έν° λ¨μμ μ μλ‘ μΆλ ₯νλ€.
νμ΄
lan ν¨μλ length κΈΈμ΄μ λμ μ΄ λμ€λ κ°―μλ₯Ό λ°ννλ€.
lan() κ°μ΄ nλ³΄λ€ ν¬κ±°λ κ°κ² λμ€λ lengthλ€μ μ΅λκ°μ ꡬνλ©΄λ¨.
μ¦ lengthμ λ§ λμ ν΄μ 쑰건μ λ§λκ±Έ 골λΌλ΄λ©΄ λλλ°,
μ΄ κ³Όμ μμ μκ°μ΄κ³Όκ° λκΈ° λλ¬Έμ μ΄λΆνμμ μ¬μ©νλ€
length κΈΈμ΄κ°μ λνμ¬ ν΄λΉ κΈΈμ΄μ λμ€λ λμ κ°―μκ° nλ³΄λ€ μμΌλ©΄ κΈΈμ΄λ₯Ό λλ¦¬κ³ , ν¬λ©΄ κΈΈμ΄λ₯Ό μ€μ΄λ λ°©μμΌλ‘ μ΄λΆνμμ μ§ννλ€.
μ΄λΆνμμ μ΄λ»κ² ꡬννλμ λ°λΌ κ·Έ λν μΌμ λ°λΌ λ°λ‘κ° μκΈ°λ μ μνλ¦°λ€λ©΄ μλ κΈμ μ°Έκ³ νμ (λ°λ‘λ₯Ό μ λ§ μ μ 리ν΄μ€¬λ€)
λ§μ½ 47%μμ νλ Έμ΅λλ€ λλ 49%μμ νλ Έμ΅λλ€ κ° λ¬λ€λ©΄
μ΄λΆνμμ μ¬μ©νλ λ³μλ€( start, end, mid )κ³Ό λ΅μ ν΄λΉνλ λ³μμ λ²μλ₯Ό νμΈνμ
λμ κΈΈμ΄μ λ²μκ° λ§€μ° ν¬κΈ° λλ¬Έμ λμ μ κΈΈμ΄μ λμνλ λ³μλ€(μμ λ§ν μ΄λΆνμμ μ¬μ©νλ λ³μλ€κ³Ό λ΅ λ³μ)μ intλ³΄λ€ ν° λ²μμΈ long longμΌλ‘ λ°λ‘ μ§μ μ΄ νμνλ€
// νμ΄ : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int k, n;
int lan(vector<int>&v, int length) {
int cnt=0;
for(int i=0; i<k; i++) {
cnt += v[i]/length;
}
return cnt;
}
int main() {
cin >> k >> n;
vector<int> v(k);
for(int i=0; i<k; i++) {
cin >> v[i];
}
long long ans=1;
long long start=1, end=*max_element(v.begin(), v.end());
while(start<=end) {
long long mid = (start+end)/2;
int tmp = lan(v, mid);
if(tmp < n) {
end = mid-1;
} else {
ans = max(mid, ans);
start = mid+1;
}
}
cout << ans;
}
'ποΈ ICPC Sinchon > Binary Search' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 1365λ²: κΌ¬μΈ μ κΉμ€ (0) | 2024.09.30 |
---|---|
[BOJ][C++] λ°±μ€ 2805λ²: λ무 μλ₯΄κΈ° (0) | 2023.11.06 |
[BOJ][C++] λ°±μ€ 1107λ²: 리λͺ¨μ»¨ (0) | 2023.01.21 |
[BOJ] λ°±μ€ 2110λ²: 곡μ κΈ° μ€μΉ (0) | 2022.10.13 |
[BOJ] λ°±μ€ 10816λ²: μ«μ μΉ΄λ 2 (0) | 2022.10.13 |