❓ 문제 ❓
두 배열 중 K번만 바꿔치기 해서 가장 큰 배열의 값을 구하여라
💯 문제 풀이 💯
두 배열 모두 정열하고 2번째 배열을 reverse해서 a배열이 b배열 보다 작으면 바꾼다(k번만).
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> a, b;
int main() {
int n, k;
cin >> n >> k;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < n; j++) {
int tmp;
cin >> tmp;
if (i == 0)
a.push_back(tmp);
else
b.push_back(tmp);
}
}
sort(a.begin(), a.end());
sort(b.begin(), b.end());
reverse(b.begin(), b.end());
int answer = 0;
for (int i = 0; i < n; i++) {
if (k && a[i] < b[i]) {
answer += b[i];
k--;
}
else {
answer += a[i];
}
}
cout << answer;
}