https://www.acmicpc.net/problem/16206
๋ฌธ์
์ค๋์ ์ฌํ์ด์ ์์ผ์ด๋ค. ์ฌํ์ด๋ ์น๊ตฌ N๋ช ์๊ฒ ๋กค์ผ์ดํฌ๋ฅผ 1๊ฐ์ฉ ์ ๋ฌผ๋ก ๋ฐ์๋ค. ๋กค์ผ์ดํฌ์ ๊ธธ์ด๋ A1, A2, ..., AN์ด๋ค. ์ฌํ์ด๋ ๊ธธ์ด๊ฐ 10์ธ ๋กค์ผ์ดํฌ๋ง ๋จน๋๋ค. ๋ฐ๋ผ์, ๋กค์ผ์ดํฌ๋ฅผ ์๋ผ์ ๊ธธ์ด๊ฐ 10์ธ ๋กค์ผ์ดํฌ๋ฅผ ์ต๋ํ ๋ง์ด ๋ง๋ค๋ ค๊ณ ํ๋ค.
๋กค์ผ์ดํฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ํตํด์ ์๋ฅผ ์ ์๋ค.
- ์๋ฅผ ๋กค์ผ์ดํฌ๋ฅผ ํ๋ ๊ณ ๋ฅธ๋ค. ๊ธธ์ด๊ฐ 1๋ณด๋ค ํฐ ๋กค์ผ์ดํฌ๋ง ์๋ฅผ ์ ์๋ค. ์ด๋, ๊ณ ๋ฅธ ๋กค์ผ์ดํฌ์ ๊ธธ์ด๋ฅผ x๋ผ๊ณ ํ๋ค.
- 0๋ณด๋ค ํฌ๊ณ , x๋ณด๋ค ์์ ์์ฐ์ y๋ฅผ ๊ณ ๋ฅธ๋ค.
- ๋กค์ผ์ดํฌ๋ฅผ ์๋ผ ๊ธธ์ด๊ฐ y, x-y์ธ ๋กค์ผ์ดํฌ ๋ ๊ฐ๋ก ๋ง๋ ๋ค.
์ฌํ์ด๋ ๋กค์ผ์ดํฌ๋ฅผ ์ต๋ M๋ฒ ์๋ฅผ ์ ์๋ค. ์ด๋, ๋ง๋ค ์ ์๋ ๊ธธ์ด๊ฐ 10์ธ ๋กค์ผ์ดํฌ ๊ฐ์์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋กค์ผ์ดํฌ์ ๊ฐ์ N๊ณผ ์๋ฅผ ์ ์๋ ์ต๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N, M ≤ 1,000)
๋์งธ ์ค์ ๋กค์ผ์ดํฌ์ ๊ธธ์ด A1, A2, ..., AN์ด ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000)
์ถ๋ ฅ
์ฌํ์ด๊ฐ ๋ง๋ค ์ ์๋ ๊ธธ์ด๊ฐ 10์ธ ๋กค์ผ์ดํฌ ๊ฐ์์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
ํ์ด
๊ทธ๋ฆฌ๋.
10์ ๋ฐฐ์๊ฐ ๋๋ ์ผ์๋ค์ m๋ฒ ์๋ฅด๋ฉด m+1 ์กฐ๊ฐ์ด ๋์ค๋ฏ๋ก ์ฐ์ ์ ์ผ๋ก ์๋ฅธ๋ค
์ดํ ๊ทธ ์ธ ์ผ์๋ค์ ํฐ ์ผ์๋ถํฐ ์๋ฅธ๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// ์
๋ ฅ
int n, m;
cin >> n >> m;
vector<int> v1;
vector<int> v2;
int x;
for(int i=0; i<n; i++) {
cin >> x;
if(x%10 == 0)
v1.push_back(x);
else
v2.push_back(x);
}
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end(), greater<>());
// ์๋ฅด๊ธฐ
int ans=0;
for(int i=0; i<v1.size(); i++) {
int tmp = v1[i]/10;
if(tmp-1 <= m) {
ans += tmp;
m -= tmp-1;
} else {
ans += m;
m = 0;
}
}
for(int i=0; i<v2.size() && m>0; i++) {
int tmp = v2[i]/10;
if(tmp <= m) {
ans += tmp;
m -= tmp;
} else {
ans += m;
m = 0;
}
}
// ์ถ๋ ฅ
cout << ans;
return 0;
}
'๐๏ธ ICPC Sinchon > Greedy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 27112๋ฒ: ์๊ฐ ์ธ ๊ทผ๋ฌด ๋ฉ์ถฐ! (0) | 2023.02.01 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 11501๋ฒ: ์ฃผ์ (0) | 2023.01.31 |
[BOJ][C++] 20921๋ฒ: ๊ทธ๋ ๊ณ ๊ทธ๋ฐ ์ฌ์ด (0) | 2023.01.31 |
[BOJ][C++] ๋ฐฑ์ค 14659๋ฒ: ํ์กฐ์์ด์ ๋ฆฌํ๊ณ ์ดใ ใ (0) | 2023.01.31 |
[BOJ G4][C++] ๋ฐฑ์ค 1339๋ฒ: ๋จ์ด ์ํ (0) | 2022.10.11 |