공부 기록장

백준 13164. 행복 유치원 본문

코딩 테스트/백준 문제 풀이

백준 13164. 행복 유치원

빛나무 2024. 1. 8. 15:04

https://www.acmicpc.net/problem/13164

 

13164번: 행복 유치원

행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로

www.acmicpc.net

 

코드

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

sub = []
for i in range(1, n):
    sub.append(p[i]-p[i-1])

sub.sort()
for _ in range(k-1):
    sub.pop()
print(sum(sub))

 

N명의 원생을

각 조에는 적어도 한 명이 존재하게, 조 별로 인원수가 같은 필요는 없게

K개의 조로 나누고,

조마다 티셔츠 만드는 비용은 (가장 키 큰 원생) - (가장 키 작은 원생) 일 때

전체 비용의 최솟값을 구하는 문제였다.

 

전체 비용이 최솟값이 되기 위해서는

각각의 편성된 조에서 (가장 키 큰 원생) - (가장 키 작은 원생)가 최소가 되어야 함으로

정렬된 원생들 사이의 키 차이 값을 구해서

키 차이가 큰 구간을 조를 나누는 지점으로 선택하면 되겠다고 생각했다.

 

K개의 조로 나누기 위해서는 조를 나누는 지점은 K-1개 선택되어야 한다.