정리 내용
문제 설명
- 난이도: 하
- 시간 제한: 2초
- 메모리 제한: 128mb
- 첫 번째 줄에 n, k가 공백으로 구분되어 입력된다.
- 두 번째 줄에 배열 a의 원소들이 공백으로 구분되어 입력된다. 모든 원소는 자연수이다.
- 세 번째 줄에 배열 b의 원소들이 공백으로 구분되어 입력된다. 모든 원소는 자연수이다.
- 최대 k번의 바꿔치기 연산을 수행하여 만들 수 있는 배열 a의 모든 원소의 합의 최댓값을 출력한다.
- 바꿔치기 연산이란 a에 있는 원소 하나와 b에 있는 원소 하나를 서로 바꾸는것을 말한다.
문제 풀이
- 배열 a에서 가장 작은 원소를 골라서, 배열 b에서 가장 큰 원소와 교체한다.
- 단, 배열 a에서 가장 작은 원소가 배열 b에서 가장 큰 원소보다 작을 때만 교체를 수행한다.
코드
n, k = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int ,input().split()))
a.sort()
b.sort(reverse=True)
for i in range(k):
if a[i] < b[i]:
a[i], b[i] = b[i], a[i]
else:
break
print(sum(a))
출처 && 깃허브
이것이 취업을 위한 코딩 테스트다 with python
github