π©π»βπ»λ¬Έμ μ€λͺ
[μ΄μ½ν
Ch6-4] λ λ°°μ΄μ μμ κ΅μ²΄ (μ λ ¬)
λλΉμ΄λ λ κ°μ λ°°μ΄ 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]
μ΄ κ²½μ°, λ€μκ³Ό κ°μ΄ μΈ λ²μ μ°μ°μ μνν μ μλ€.
μ°μ° 1) λ°°μ΄ Aμ μμ '1'κ³Ό λ°°μ΄ Bμ μμ '6'μ λ°κΎΈκΈ°
μ°μ° 2) λ°°μ΄ Aμ μμ '2'μ λ°°μ΄ Bμ μμ '6'μ λ°κΎΈκΈ°
μ°μ° 3) λ°°μ΄ Aμ μμ '3'κ³Ό λ°°μ΄ Bμ μμ '5'λ₯Ό λ°κΎΈκΈ°
μΈ λ²μ μ°μ° μ΄ν λ°°μ΄ Aμ λ°°μ΄ Bμ μνλ λ€μκ³Ό κ°μ΄ ꡬμ±λ κ²μ΄λ€.
λ°°μ΄ A = [6, 6, 5, 4, 5]
λ°°μ΄ B = [3, 5, 1, 2, 5]
μ΄λ λ°°μ΄ Aμ λͺ¨λ μμμ ν©μ 26μ΄ λλ©°, μ΄λ³΄λ€ λ ν©μ ν¬κ² λ§λ€ μλ μλ€.
μ λ ₯
- 첫 λ²μ§Έ μ€: N, K κ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ λ ₯ (1 <= N <= 100,000, 0 <= K <= N)
- λ λ²μ§Έ μ€: λ°°μ΄ Aμ μμλ€μ΄ 곡백μΌλ‘ ꡬλΆλμ΄ μ λ ₯ (μμ a < 10,000,000μΈ μμ°μ)
- μΈ λ²μ§Έ μ€: λ°°μ΄ Bμ μμλ€μ΄ 곡백μΌλ‘ ꡬλΆλμ΄ μ λ ₯ (μμ b < 10,000,000μΈ μμ°μ)
μΆλ ₯
- μ΅λ Kλ² λ°κΏμΉκΈ° μ°μ°μ μνν΄μ κ°μ₯ μ΅λμ ν©μ κ°λ Aμ λͺ¨λ μμ κ°μ ν©μ μΆλ ₯
μ λ ₯ μμ
5 3
1 2 5 4 3
5 5 6 6 5
μΆλ ₯ μμ
26
βοΈIdea Sketch
μκ³ λ¦¬μ¦ : μ λ ¬
μκ°λ³΅μ‘λ
νμ΄μ¬μ κΈ°λ³Έ μ λ ¬ λΌμ΄λΈλ¬λ¦¬μΈ sorted()μ sort()ν¨μλ₯Ό μ 곡νλ€. λ³ν© μ λ ¬μ κΈ°λ°μΌλ‘ λ§λ€μ΄μ‘λλ°, λ³ν© μ λ ¬μ μΌλ°μ μΈ κ²½μ° ν΅ μ λ ¬λ³΄λ€ λ리μ§λ§ μ΅μ μ κ²½μ°μλ μκ° λ³΅μ‘λ O(NlogN)μ 보μ₯νλ€.
λ¬Έμ μμλ λ λ°°μ΄μ μμκ° μ΅λ 100,000κ°κΉμ§ μ
λ ₯λ μ μμΌλ―λ‘ O(N^2)μ μ νμ λ ¬μ΄λ μ½μ
μ λ ¬λ‘ κ΅¬ννλ©΄ μκ°μ΄κ³Όκ° λ°μν κ²μ΄λ€. λ°λΌμ O(NlogN)μ 보μ₯νλ μ λ ¬ μκ³ λ¦¬μ¦μ μ¬μ©νλ€.
βοΈλ΄ μμ€μ½λ
- λ°°μ΄ Bλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬νλ€.
- λ°λΌμ λ°°μ΄ Bμμ ν° μμλ λ€μͺ½μ μμΌλ―λ‘, λ€μμλΆν° Kκ°μ μμλ₯Ό sliceνμ¬ λ°°μ΄ Aμ λνλ€.
- λ°°μ΄ Aλ₯Ό λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬ν ν, μμμλΆν° Nκ°λ§νΌ sliceν λ°°μ΄μ μ΄ν©(sum ν¨μ)μ ꡬνλ€.
import sys
si = sys.stdin.readline
n, k = map(int, si().split())
a = list(map(int, si().split()))
b = sorted(map(int, si().split()))
a += b[-k:]
print(sum(sorted(a, reverse=True)[:n]))