π»
[λ°±μ€] λΆν μ 볡 - 1654. λμ μλ₯΄κΈ° λ³Έλ¬Έ
[λ°±μ€] λΆν μ 볡 - 1654. λμ μλ₯΄κΈ°
λν¨λ 2020. 2. 12. 21:41λ¬Έμ
μ§μμ μκ°μ 보λ΄λ μ€μμμ λ°μ±μμ λΆλ¦μ λ°κ³ κΈν λ¬λ €μλ€. λ°μ±μμ΄ μΊ ν λ μΈ 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κ°λ₯Ό λ§λ€ μ μλ λμ μ μ΅λ κΈΈμ΄λ₯Ό μΌν°λ―Έν° λ¨μμ μ μλ‘ μΆλ ₯νλ€.
μμ μ λ ₯1
4 11
802
743
457
539
μμ μΆλ ₯1
200
μκ°
μ²μμΌλ‘ μκ°ν κ²μ Nμ Kλ‘ λλ λͺ«μΌλ‘ κ°μ§κ³ μλ λμ κΈΈμ΄ μ€ κ°μ₯ μμ κΈΈμ΄μ λμ μ λλμ΄ λ³΄μλ€.
μμ λ₯Ό κ°μ§κ³ μκ°ν΄λ³Έλ€λ©΄ 11/4 = 2 λκΉ, 457/2 = 228.
κ·Έλ¦¬κ³ κ·Έ μλ‘ λλ¨Έμ§ λμ λ€μ μλμ λ λμ μ κ°μκ° Nλ³΄λ€ ν° μ§ νΉμ μμ μ§λ₯Ό λΉκ΅ν΄μ λλλ μλ₯Ό ν€μ°κ±°λ μ€μΈλ€.
μλμ κ°μ΄ μ½λλ₯Ό μμ±νλλ° μκ° μ΄κ³Όκ° λμλ€.
#include <iostream>
#include <algorithm>
#define MAX 10000
using namespace std;
int n,k;
int line[MAX+1];
void Search(int divide){
int cnt = 0;
for(int i=0; i< k; i++){
cnt += (line[i]/divide);
}
if(cnt == n){
cout << divide <<"\n";
}else if(cnt < n){
divide --;
Search(divide);
}else if(cnt > n){
divide ++;
Search(divide);
}
return;
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> k >> n;
for(int i=0; i<k; i++){
cin >> line[i];
}
// μ΅μκ° κ΅¬νκΈ° μν΄ minν¨μμ¬μ©
int divide = *min_element(line, line+k)/ (n/k);
Search(divide);
return 0;
}
μμ±ν μ½λ
#include <iostream>
#include <algorithm>
#define MAX 10000
using namespace std;
int n,k;
int line[MAX+1];
void binarySearch(long long first, long long last){
long long result = 0;
while(first <= last){
long long mid = (first+last)/2;
int cnt = 0;
for(int i=0; i<k; i++){
cnt += line[i]/mid;
}
if(cnt >= n){
first = mid+1;
if(result < mid){
result = mid;
}
}else{
last = mid-1;
}
}
cout << result << "\n";
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> k >> n;
for(int i=0; i<k; i++){
cin >> line[i];
}
long long high = *max_element(line, line+k);
binarySearch(1, high); //0λΆν° μμνλ κ²μΌλ‘ νλ©΄ λ°νμμλ¬κ° λλ―λ‘ μ£Όμ!!
return 0;
}
binarySearch(0, high)λ‘ νλ©΄ λ°νμμλ¬κ° λμ λλ체 μ? νλλ°
λ§μ½ μμ μ λ ₯μ΄
1 1
1
μ΄λΌκ³ νλ©΄ midκ°μ΄ 0μ΄ λμμ 0μΌλ‘ λλλ κ²μΌλ‘ λκΈ°λλ¬Έμ division by zeroκ° λλ€.
'μκ³ λ¦¬μ¦ > λ¬Έμ νμ΄ Baekjoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] μ°μ μμ ν - 11286. μ λκ° ν (0) | 2020.02.13 |
---|---|
[λ°±μ€] λΆν μ 볡 - 1992. μΏΌλνΈλ¦¬(λ¬Έμ νΈλμ€) (0) | 2020.02.12 |
[λ°±μ€] 그리λ - 11399. ATM (0) | 2020.02.12 |
[λ°±μ€] λμ κ³νλ² - 1904. 01νμΌ (0) | 2020.02.12 |
[λ°±μ€] μ΄λΆ νμ - 1920. μ μ°ΎκΈ° (0) | 2020.02.04 |