๐ง ๋ฌธ์
N๊ฐ์ ๋ง๊ตฌ๊ฐ์ด 1์ฐจ์ ์์ง์ ์์ ์์ต๋๋ค. ๊ฐ ๋ง๊ตฌ๊ฐ์ X1, X2, X3 ... XN์ ์ขํ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ง๊ตฌ๊ฐ๊ฐ์ ์ขํ๊ฐ ์ค๋ณต๋๋ ๋ ์ผ์ ์์ต๋๋ค.
ํ์๋ C๋ง๋ฆฌ์ ๋ง์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด ๋ง๋ค์ ์๋ก ๊ฐ๊น์ด ์๋ ๊ฒ์ ์ข์ํ์ง ์์ต๋๋ค. ๊ฐ๋ง๊ตฌ๊ฐ์๋ ํ ๋ง๋ฆฌ์ ๋ง๋ง ๋ฃ์ ์ ์๊ณ , ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ๋ง์ ๊ฑฐ๋ฆฌ๊ฐ ์ต๋๊ฐ ๋๊ฒ ๋ง์ ๋ง๊ตฌ๊ฐ์ ๋ฐฐ์นํ๊ณ ์ถ์ต๋๋ค. C๋ง๋ฆฌ์ ๋ง์ N๊ฐ์ ๋ง๊ตฌ๊ฐ์ ๋ฐฐ์นํ์ ๋, ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ๋ง์ ๊ฑฐ๋ฆฌ๊ฐ ์ต๋๊ฐ ๋๋ ๊ทธ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
โจ 1ํธ (๊ฐ์ ํ์ด)
๋ง๊ตฟ๊ฐ์ ์์น๋ฅผ ์ ๋ ฌํด์ค๋ค. 1 2 4 8 9
๋ต์ ๋ฒ์ : ์ต์๊ฐ ~ ์ต๋๊ฐ ์ฌ์ด ๐ 1 ~ 9
๋ ๋ง์ ๊ฑฐ๋ฆฌ๊ฐ ์ต๋๊ฐ ๋์ผ ํ๊ธฐ ๋๋ฌธ์, 1 ์์น๋ถํฐ ๋ฃ์ด๋ณธ๋ค.
1. mid = (1+9) / 2 = 5 ๐ ๋ต์ด ๋๋์ง ์ฒดํฌ
- 1 ์์น์ ๋ง ๋ฐฐ์น, 2 ์์น์ ๋ง ๋ฐฐ์น ๐ ์๋ก ๋นผ์ค์ ์ต์ ๊ฐ๊ฒฉ์ด 5๊ฐ ๋๋์ง ์ฒดํฌ ๐ 1์ด๊ธฐ ๋๋ฌธ์ 2์ ๋ง ๋ฐฐ์น ๋ถ๊ฐ
- 1 ์์น์ ๋ง ๊ณ ์ , 4 ์์น์ ๋ง ๋ฐฐ์น ๐ 4-1 < 5 ๐ 4 ์์น์ ๋ง ๋ฐฐ์น ๋ถ๊ฐ
- 1 ์์น์ ๋ง ๊ณ ์ , 8 ์์น์ ๋ง ๋ฐฐ์น ๐ 8-1 > 5 ๐ 8 ์์น์ ๋ง ๋ฐฐ์น ๊ฐ๋ฅ
- 8 ์์น์ ๋ง ๊ณ ์ , 9 ์์น์ ๋ง ๋ฐฐ์น ๐ 9-8 < 5 ๐ 9 ์์น์ ๋ง ๋ฐฐ์น ๋ถ๊ฐ
- ๋ฐ๋ผ์, ์ด 2๋ง๋ฆฌ์ ๋ง๋ง ๋ฐฐ์น ๊ฐ๋ฅํ๋ฏ๋ก, 5๋ ๋ต์ด ๋ ์ ์๊ณ , mid ๊ธฐ์ค ์ค๋ฅธ์ชฝ ๋ ๋ฆฌ
2. mid = (1+4) / 2 = 2
- 1 ์์น์ ๋ง ๊ณ ์ , 2 ์์น์ ๋ง ๋ฐฐ์น ๐ 2-1 < 2 ๐ 2 ์์น์ ๋ง ๋ฐฐ์น ๋ถ๊ฐ
- 1 ์์น์ ๋ง ๊ณ ์ , 4 ์์น์ ๋ง ๋ฐฐ์น ๐ 4-1 > 2 ๐ 4 ์์น์ ๋ง ๋ฐฐ์น ๊ฐ๋ฅ
- ๊ณ์ํ๋ฉด, ์ด 3๋ง๋ฆฌ์ ๋ง ๋ฐฐ์น ๊ฐ๋ฅํ๋ฏ๋ก, 2๋ ๋ต์ด ๋ ์ ์๋ค. ๐ 3 ์ด์๋ถํฐ 4 ์ดํ ๊ฑฐ๋ฆฌ๋ก ํ์ธ
3. mid = (3+4) / 2 = 3 ์ด๋ฐ์์ผ๋ก ๊ณ์ฐํ๋ฉด ๋๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int Count(int len, vector<int> b){
int cnt = 1, pos= b[1];
for(int i = 2; i <= n; ++i){
if(b[i] - pos >= len){
cnt++;
pos = b[i];
}
}
return cnt;
}
int main(void){
freopen("input.txt", "rt", stdin);
int m;
cin >> n >> m;
vector<int> a(n);
for(int i = 1; i <= n; ++i){
cin >> a[i];
}
sort(a.begin(), a.end());
int left = 1, right, mid, res;
right = a[n];
while(left <= right){
mid = (left + right) / 2;
if(Count(mid, a) >= m){
res = mid;
left = mid + 1;
}
else{
right = mid - 1;
}
}
cout << res;
return 0;
}
'๐ง ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ C++] 45. ๊ณต์ฃผ ๊ตฌํ๊ธฐ (์กฐ์ธํผ์ค) (0) | 2024.05.08 |
---|---|
[์ธํ๋ฐ C++] 43. ๋ฎค์ง๋น๋์ค(์ด์งํ์ ์์ฉ) (0) | 2024.05.07 |
[์ธํ๋ฐ C++] 42. ์ด๋ถ๊ฒ์(์ด์ง ํ์) (0) | 2024.05.07 |
[์ธํ๋ฐ C++] 41. ์ฐ์๋ ์์ฐ์์ ํฉ (0) | 2024.05.07 |
[์ธํ๋ฐ C++] 40. ๊ต์งํฉ(ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ) (2) | 2024.05.02 |