๐ง ๋ฌธ์
DVD์๋ ์ด N๊ฐ์ ๊ณก์ด ๋ค์ด๊ฐ๋ค. DVD์ ๋ นํํ ๋์๋ ๋ผ์ด๋ธ์์์ ์์๊ฐ ๊ทธ๋๋ก ์ ์ง๋์ด์ผ ํ๋ค. ์ฆ, 1๋ฒ ๋ ธ๋์ 5๋ฒ ๋ ธ๋๋ฅผ ๊ฐ์ DVD์ ๋ นํํ๊ธฐ ์ํด์๋ 1๋ฒ๊ณผ 5๋ฒ ์ฌ์ด์ ๋ชจ๋ ๋ ธ๋๋ ๊ฐ์ DVD์ ๋ นํํด์ผ ํ๋ค.
M๊ฐ์ DVD์ ๋ชจ๋ ๋์์์ ๋ นํํ๊ธฐ๋ก ํ์๋ค. ์ด๋ DVD์ ํฌ๊ธฐ๋ฅผ ์ต์๋ก ํ๋ คํ๋ค. ๊ทธ๋ฆฌ๊ณ M๊ฐ์ DVD๋ ๋ชจ๋ ๊ฐ์ ํฌ๊ธฐ์ฌ์ผ ์ ์กฐ์๊ฐ๊ฐ ์ ๊ฒ ๋ค๊ธฐ ๋๋ฌธ์ ๊ผญ ๊ฐ์ ํฌ๊ธฐ๋ก ํด์ผ ํ๋ค.
โจ 1ํธ (์ฑ๊ณต)
์ค๋๋ง์ ์ฑ๊ณต.. /(ใoใ)/~~
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void){
freopen("input.txt", "rt", stdin);
int n, m, cnt = 0, total = 0;
cin >> n >> m;
vector<int> a(n);
for(int i = 0; i < n; ++i){
cin >> a[i];
}
int left = 0;
int right = n-1;
int mid;
mid = (left + right) / 2;
cnt++;
while(cnt <= m){
mid = (left + right) / 2;
if(cnt == m){
for(int i = mid; i < n; ++i){
total += a[i];
}
break;
}
left = mid + 1;
cnt++;
}
cout << total;
return 0;
}
โจ 2ํธ (๊ฐ์ ํ์ด)
1 ~ 1+...+9 = 45 ์ mid ๊ฐ = 23
๐ 1~9๊น์ง 3๊ฐ ์ดํ์ DVD๋ฅผ ๋ง๋ค ์ ์๋์ง ์ฒดํฌ(1๋ถํฐ ํ๋์ฉ ๋ํด์ 23 ์ดํ๋ก ๋ง๋ค ์ ์๋์ง)
๐ ๊ฐ๋ฅํ๋ฉด ๋ค์ 1 ~ 23 ์ mid ๊ฐ = 12 ๐ 3๊ฐ ์ด๊ณผํจ
๐ 12~23์ mid ๊ฐ์ ์ฐพ์์ ๋ค์ ์ฒดํฌํ๋ ๋ฐฉ์
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int a[1001], n;
int Count(int s){
int cnt = 1, sum = 0;
for(int i = 1; i <= n; ++i){
if(sum + a[i] > s){
cnt++;
sum = a[i];
}
else{
sum += a[i];
}
}
return cnt;
}
int main(void){
freopen("input.txt", "rt", stdin);
int m, res;
int max = -2147000000;
cin >> n >> m;
int left = 1;
int right = 0;
int mid;
for(int i = 1; i <= n; ++i){
cin >> a[i];
right += a[i];
if(a[i] > max){
max = a[i];
}
}
while(left <= right){
mid = (left + right) / 2;
if(mid >= max && Count(mid) <= m){
res = mid;
right = mid - 1;
}
else{
left = mid + 1;
}
}
cout << res;
return 0;
}
'๐ง ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ C++] 45. ๊ณต์ฃผ ๊ตฌํ๊ธฐ (์กฐ์ธํผ์ค) (0) | 2024.05.08 |
---|---|
[์ธํ๋ฐ C++] 44. ๋ง๊ตฌ๊ฐ ์ ํ๊ธฐ (์ด์งํ์ ์์ฉ) (0) | 2024.05.08 |
[์ธํ๋ฐ C++] 42. ์ด๋ถ๊ฒ์(์ด์ง ํ์) (0) | 2024.05.07 |
[์ธํ๋ฐ C++] 41. ์ฐ์๋ ์์ฐ์์ ํฉ (0) | 2024.05.07 |
[์ธํ๋ฐ C++] 40. ๊ต์งํฉ(ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ) (2) | 2024.05.02 |