[이것이 코딩 테스트다] 두 배열의 원소 교체

고재욱·2021년 9월 18일
0

❓ 문제 ❓
두 배열 중 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;
}

0개의 댓글