[BOJ/13164] ν볡 μ μΉμ (그리λ)
# 13164 ν볡 μ μΉμ λ¬Έμ
ν볡 μ μΉμ μμ₯μΈ νμμ΄λ μ΄λ λ Nλͺ μ μμλ€μ ν€ μμλλ‘ μΌλ ¬λ‘ μ€ μΈμ°κ³ , μ΄ Kκ°μ μ‘°λ‘ λλλ €κ³ νλ€. κ° μ‘°μλ μμμ΄ μ μ΄λ ν λͺ μμ΄μΌ νλ©°, κ°μ μ‘°μ μν μμλ€μ μλ‘ μΈμ ν΄ μμ΄μΌ νλ€. μ‘°λ³λ‘ μΈμμκ° κ°μ νμλ μλ€.
μ΄λ κ² λλμ΄μ§ μ‘°λ€μ κ°μ λ¨μ²΄ ν°μ μΈ λ₯Ό λ§μΆλ €κ³ νλ€. μ‘°λ§λ€ ν°μ μΈ λ₯Ό λ§μΆλ λΉμ©μ μ‘°μμ κ°μ₯ ν€κ° ν° μμκ³Ό κ°μ₯ ν€κ° μμ μμμ ν€ μ°¨μ΄λ§νΌ λ λ€. μ΅λν λΉμ©μ μλΌκ³ μΆμ΄ νλ νμμ΄λ Kκ°μ μ‘°μ λν΄ ν°μ μΈ λ§λλ λΉμ©μ ν©μ μ΅μλ‘ νκ³ μΆμ΄νλ€. νμμ΄λ₯Ό λμ μ΅μμ λΉμ©μ ꡬνμ.
λ¬Έμ λ₯Ό νκ² λ λ΄ νλ¦μ μ€λͺ ν΄λ³΄κ² λ€.
λ¬Έμ λ₯Ό λ¨Όμ λ΄€μλ μ μΌ λ¨Όμ μ μλ κ²μ
μ 체 Nλͺ / ν€ μμ => μ€λ¦μ°¨μ / kκ° μ‘° / κ°κ²© : μ μΌν° - μ μΌ μμ
μ΄ ν€μλλ€λ‘ μμνλ€.
μ μΌ μ²μ λ¬Έμ λ₯Ό λ³Ό λλ μμ νμ / λ°±νΈλνΉ μ΄λ κ² λκ°μ§ λ°©λ²μ΄ μκ°λ¬λ€.
μ μΌ μ²« κ΄λ¬Έμ Nλͺ μ μ΄λ»κ² kκ°λ‘ λλμ§μ λν λ°©λ²μ΄μλ€.
μ¬κΈ°μ μκ°λ 건 λ°±νΈλνΉμ΄μλ€.
1-nκΉμ§μ μ«μλ₯Ό kλ² λ½μμ ν©μ΄ nμ΄ λκ²λ λ§λλ λ‘μ§μ μμ±νμλ€.
κ·Έ ν, λ°±νΈλνΉμΌλ‘ 5λ₯Ό kκ°λ‘ λλ μ μλ μ‘°ν©μ μ°Ύκ³ , μ€λ¦μ°¨μ μ λ ¬μ ν μμλ€μ λλλ λ°©λ²!μΌλ‘ ꡬννλ €κ³ λ§μλ¨Ήμλ€.
λλ²μ§Έλ μ‘°ν©μΌλ‘ λλ μμλ€μ κ°κ²©μ μ΄λ»κ² μΈ‘μ ν κ²μ΄λ μλ€.
κ·Έ μ‘°ν©μΌλ‘ λμκ°λ©΄μ κ°κ²©μ μΈ‘μ ν΄μ κ²°κ³Όμ μΌλ‘ μ΅μλ₯Ό ꡬνλ λ°©λ²μ μ±ν!
λκ°μ§ μκ°μ λ§μΉ λλ μλμ κ°μ μ½λλ₯Ό μμ±νλ€.
n, k = tuple(map(int, input().split()))
arr = []
cnt = 0
kids = sorted(list(map(int, input().split())))
ans = max(kids)
def choose_number(curr_num):
global cnt, ans
if (curr_num == k and cnt == n):
temp = 0
temp_ans = 0
for elem in arr:
temp_ans += kids[elem+temp-1] - kids[temp]
temp += elem
ans = min(ans, temp_ans)
for i in range(1, n):
if (cnt+i > n):
return
arr.append(i)
cnt += i
choose_number(curr_num+1)
cnt -= i
arr.pop()
choose_number(0)
print(ans)
κ·Έ κ²°κ³Ό..
λ°νμμλ¬ λ±μ₯...
λ λ‘리λ‘
μ¬κΈ°μλΆν° λκ° ν¬κ² μλͺ»λ¨μ κ°μ§..
μλͺ»λΌλ νμ°Έ μλͺ»λλ€.
μΌλ¨ μμ΄λμ΄κ° μ΄λμ λ νμνλ€.
kκ°μ μ‘°λ‘ λλκΈ° μν΄μλ Nμ k-1κ°μ κΈ°μ€μΌλ‘ μλΌμΌνλ€.
κ·Έ κΈ°μ€μ μμμλ μμμ μ°¨μ΄μ΄λ€.
μμ°¨μ΄κ° ν° κΈ°μ€μΌλ‘ λλ μΌ κ·Έ κ°μ΄ κ°κ²©μΌλ‘ μΈ‘μ λμ§ μμκ±°κΈ° λλ¬Έμ κ°μ₯ ν° μ°¨μ΄λ₯Ό κ°μ§κ³ μλ k-1κ°λ₯Ό
μλ₯Ό λ€μ΄,
n=7 k=3
1 3 4 8 11 15 20 μ΄λΌκ³ ν΄λ³΄μ
>2 1 4 3 4 5
μ΄ μ°¨μ΄λ₯Ό μ€λ¦μ°¨μ νλ©΄ => 1 2 3 4 4 5μ΄λ€.
1 2 3 4 /4/ 5 -> 4μ 5κ° κΈ°μ€μΌλ‘ μ‘°κ° λλμ΄μ ΈμΌ λΉμ©μ ν©μ΄ μ΅μκ° λλ€.
μ¬κΈ°μ λμ μμλλ‘ k-1κ°λ₯Ό μ κ±°ν νμ ν©μ΄ λ΅μ΄λ€.
μ λ‘μ§μ λ°μν μ½λκ° μλμ μ½λμ΄λ€.
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
kids = list(map(int, input().split()))
ans = []
for i in range(1, n):
ans.append(kids[i] - kids[i-1])
ans.sort(reverse=True)
print(sum(ans[k-1:]))
κΈ°μ€μ μ μκ°νλ λ§μΈλλ₯Ό κ°μ