이것이 μ½”λ”©ν…ŒμŠ€νŠΈλ‹€/μ •λ ¬

두 λ°°μ—΄μ˜ μ›μ†Œ ꡐ체(Python κ΅¬ν˜„)- 이것이 μ½”λ”©ν…ŒμŠ€νŠΈλ‹€.

CheonD 2020. 8. 27. 20:53

두 λ°°μ—΄μ˜ μ›μ†Œ κ΅μ²΄(Python κ΅¬ν˜„)- μ΄κ²ƒμ΄ μ½”λ”©ν…ŒμŠ€νŠΈλ‹€.

 

 

문제 : λ™λΉˆμ΄λŠ” 두 개의 λ°°μ—΄ A와 Bλ₯Ό 가지고 μžˆλ‹€. 두 배열은 N개의 μ›μ†Œλ‘œ κ΅¬μ„±λ˜μ–΄ 있으며, λ°°μ—΄μ˜ μ›μ†ŒλŠ” λͺ¨λ‘ μžμ—°μˆ˜μ΄λ‹€. λ™λΉˆμ΄λŠ” μ΅œλŒ€ K번의 λ°”κΏ”μΉ˜κΈ° 연산을 μˆ˜ν–‰ν•  수 μžˆλŠ”λ°, λ°”κΏ”μΉ˜κΈ° μ—°μ‚°μ΄λž€ λ°°μ—΄ A에 μžˆλŠ” μ›μ†Œ ν•˜λ‚˜μ™€ λ°°μ—΄ B에 μžˆλŠ” μ›μ†Œ ν•˜λ‚˜λ₯Ό κ³¨λΌμ„œ 두 μ›μ†Œλ₯Ό μ„œλ‘œ λ°”κΎΈλŠ” 것을 λ§ν•œλ‹€. λ™λΉˆμ΄μ˜ μ΅œμ’… λͺ©ν‘œλŠ” λ°°μ—΄ A의 λͺ¨λ“  μ›μ†Œμ˜ 합이 μ΅œλŒ€κ°€ λ˜λ„λ‘ ν•˜λŠ” 것이며, μ—¬λŸ¬λΆ„μ€ λ™λΉˆμ΄λ₯Ό 도와야 ν•œλ‹€.

N, K, 그리고 λ°°μ—΄ A와 B의 정보가 μ£Όμ–΄μ‘Œμ„ λ•Œ, μ΅œλŒ€ K번의 λ°”κΏ”μΉ˜κΈ° 연산을 μˆ˜ν–‰ν•˜μ—¬ λ§Œλ“€ 수 μžˆλŠ” λ°°μ—΄ A의 λͺ¨λ“  μ›μ†Œμ˜ ν•©μ˜ μ΅œλŒ“κ°’μ„ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

예λ₯Ό λ“€μ–΄ N = 5, K = 3이고 λ°°μ—΄ A와 Bκ°€ λ‹€μŒκ³Ό κ°™λ‹€κ³  ν•˜μž.

 

  • λ°°μ—΄ A = [1, 2, 5, 4, 3]
  • λ°°μ—΄ B = [5, 5, 6, 6, 5]   

이 경우 λ‹€μŒκ³Ό 같이 μ„Έ 번의 연산을 μˆ˜ν–‰ν•  수 μžˆλ‹€.

  • λ°°μ—΄ A의 μ›μ†Œ '1'κ³Ό λ°°μ—΄ B의 μ›μ†Œ '6'을 λ°”κΎΈκΈ°
  • λ°°μ—΄ A의 μ›μ†Œ '2'와 λ°°μ—΄ B의 μ›μ†Œ '6'을 λ°”κΎΈκΈ°
  • λ°°μ—΄ A의 μ›μ†Œ '3'κ³Ό λ°°μ—΄ B의 μ›μ†Œ '5'λ₯Ό λ°”κΎΈκΈ°

μ„Έ 번의 μ—°μ‚° 이후 λ°°μ—΄ A와 λ°°μ—΄ B의 μƒνƒœλŠ” λ‹€μŒκ³Ό 같이 ꡬ성될 것이닀.

  •   λ°°μ—΄ A = [6, 6, 5, 4, 5]
  •   λ°°μ—΄ B = [3, 5, 1, 2, 5]

μ΄λ•Œ λ°°μ—΄ A의 λͺ¨λ“  μ›μ†Œμ˜ 합은 26이 되며, 이보닀 더 합을 크게 λ§Œλ“€ μˆ˜λŠ” μ—†λ‹€. λ”°λΌμ„œ 이 μ˜ˆμ‹œμ˜ 정닡은 26이 λœλ‹€.

 

μž…λ ₯ 쑰건

-첫 번째 쀄에 N, Kκ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μž…λ ₯λœλ‹€. (1<=N<=100,000, 0<=K<=N)

-두 번째 쀄에 λ°°μ—΄ A의 μ›μ†Œλ“€μ΄ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μž…λ ₯λœλ‹€. λͺ¨λ“  μ›μ†ŒλŠ” 10,000,000보닀 μž‘μ€ μžμ—°μˆ˜μ΄λ‹€.

-μ„Έ 번째 쀄에 λ°°μ—΄ B의 μ›μ†Œλ“€μ΄ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μž…λ ₯λœλ‹€. λͺ¨λ“  μ›μ†ŒλŠ” 10,000,000보닀 μž‘μ€ μžμ—°μˆ˜μ΄λ‹€.

 

좜λ ₯ 쑰건

-μ΅œλŒ€ K번의 λ°”κΏ”μΉ˜κΈ° 연산을 μˆ˜ν–‰ν•˜μ—¬ λ§Œλ“€ 수 μžˆλŠ” λ°°μ—΄ A의 λͺ¨λ“  μ›μ†Œμ˜ ν•©μ˜ μ΅œλŒ“κ°’μ„ 좜λ ₯ν•œλ‹€.

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))