[λ°±μ€ 13164λ²] [π₯5] ν볡 μ μΉμ (python)
λ¬Έμ
ν볡 μ μΉμ μμ₯μΈ νμμ΄λ μ΄λ λ Nλͺ μ μμλ€μ ν€ μμλλ‘ μΌλ ¬λ‘ μ€ μΈμ°κ³ , μ΄ Kκ°μ μ‘°λ‘ λλλ €κ³ νλ€. κ° μ‘°μλ μμμ΄ μ μ΄λ ν λͺ μμ΄μΌ νλ©°, κ°μ μ‘°μ μν μμλ€μ μλ‘ μΈμ ν΄ μμ΄μΌ νλ€. μ‘°λ³λ‘ μΈμμκ° κ°μ νμλ μλ€.
μ΄λ κ² λλμ΄μ§ μ‘°λ€μ κ°μ λ¨μ²΄ ν°μ μΈ λ₯Ό λ§μΆλ €κ³ νλ€. μ‘°λ§λ€ ν°μ μΈ λ₯Ό λ§μΆλ λΉμ©μ μ‘°μμ κ°μ₯ ν€κ° ν° μμκ³Ό κ°μ₯ ν€κ° μμ μμμ ν€ μ°¨μ΄λ§νΌ λ λ€. μ΅λν λΉμ©μ μλΌκ³ μΆμ΄ νλ νμμ΄λ Kκ°μ μ‘°μ λν΄ ν°μ μΈ λ§λλ λΉμ©μ ν©μ μ΅μλ‘ νκ³ μΆμ΄νλ€. νμμ΄λ₯Ό λμ μ΅μμ λΉμ©μ ꡬνμ.
μ λ ₯
μ λ ₯μ 첫 μ€μλ μ μΉμμ μλ μμμ μλ₯Ό λνλ΄λ μμ°μ N(1 β€ N β€ 300,000)κ³Ό λλλ €κ³ νλ μ‘°μ κ°μλ₯Ό λνλ΄λ μμ°μ K(1 β€ K β€ N)κ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ£Όμ΄μ§λ€. λ€μ μ€μλ μμλ€μ ν€λ₯Ό λνλ΄λ Nκ°μ μμ°μκ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄ μ€ μ μλ μμλλ‘ μ£Όμ΄μ§λ€. νμμ΄λ μμλ€μ ν€ μμλλ‘ μ€ μΈμ μΌλ―λ‘, μΌμͺ½μ μλ μμμ΄ μ€λ₯Έμͺ½μ μλ μμλ³΄λ€ ν¬μ§ μλ€. μμμ ν€λ 109λ₯Ό λμ§ μλ μμ°μμ΄λ€.
μΆλ ₯
ν°μ μΈ λ§λλ λΉμ©μ΄ μ΅μκ° λλλ‘ Kκ°μ μ‘°λ‘ λλμμ λ, ν°μ μΈ λ§λλ λΉμ©μ μΆλ ₯νλ€.
μμ μ λ ₯ 1
5 3
1 3 5 6 10
μμ μΆλ ₯ 1
3
ννΈ
- 1μ‘°: 1, 3
- 2μ‘°: 5, 6
- 3μ‘°: 10
νμ΄
- μ λ ₯μ λ°κ³ , κ° νμμ ν€λ₯Ό 리μ€νΈλ λ°°μ΄μ μ μ₯
- νμλ€μ ν€ μμλλ‘ μ λ ¬
- μΈμ ν νμλ€ κ°μ ν€ μ°¨μ΄λ₯Ό κ³μ°νμ¬ ν©μ ꡬνλ€.
- μΈμ ν νμλ€ κ°μ ν€ μ°¨μ΄λ νμ¬ νμμ ν€μμ λ€μ νμμ ν€λ₯Ό λΊ κ°
- μΈμ ν νμλ€ κ°μ ν€ μ°¨μ΄μ ν©μ μΆλ ₯
μ½λ
ver(1) - Greedy μ¬μ©
μκ° λ³΅μ‘λλ O(nlogn)
import sys
input = sys.stdin.readline
# μμ μμ μ κ±°ν μμ μλ₯Ό μ
λ ₯λ°μ΅λλ€.
n, k = map(int, input().split())
# μμλ€μ ν€ μ 보λ₯Ό 리μ€νΈλ‘ μ
λ ₯λ°μ΅λλ€.
kids = list(map(int, input().split()))
# μΈμ ν μμκ³Όμ ν€ μ°¨μ΄λ₯Ό κ³μ°νμ¬ λ¦¬μ€νΈμ μ μ₯ν©λλ€.
diff = [kids[i+1] - kids[i] for i in range(n-1)]
# ν€ μ°¨μ΄λ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬ν©λλ€.
diff.sort()
# μ κ±°ν μμ μ(n-k)λ§νΌ ν€ μ°¨μ΄μ ν©μ κ³μ°νμ¬ μΆλ ₯ν©λλ€.
print(sum(diff[0:n-k]))
λκΈλ¨κΈ°κΈ°