정렬: 두 배열의 원소 교체

yozzum·2022년 4월 1일
0

문제정의

배열 크기 n, 교체횟수 k 가 주어졌을 때, k번 데이터를 교체하여 a 리스트의 원소 합이 최대가 되게 하시오.

입력조건

  • 첫 번째 줄에 n, k가 공백을 기준으로 구분되어 입력됩니다. (1 <= N <= 100,000, 0 <= K <= N)
  • 두 번째 줄에 배열 A의 원소들이 공백을 기준으로 구분되어 입력됩니다. 모든 원소는 10,000,000보다 작은 자연수입니다.
  • 세 번째 줄에 배열 B의 원소들이 공백을 기준으로 구분되어 입력됩니다. 모든 원소는 10,000,000보다 작은 자연수입니다.

출력조건

  • 최대 K번의 교체 연산을 수행하여 만들 수 있는 배열 A의 모든 원소의 합의 최댓값을 출력합니다.

내가 짠 코드

n = 5
k = 3

a = [1,2,5,4,3]
b = [5,5,6,6,5]

sa = sorted(a, reverse=False)
sb = sorted(b, reverse=True)

for i in range(k):
    temp = sa[i]
    sa[i] = sb[i]
    sb[i] = temp

result = 0
for j in range(len(sa)):
    result += sa[j]    
print(result)

정답코드

n, k = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

a.sort(reverse=False)
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))
profile
yozzum

0개의 댓글