인접한 아이끼리만 같은 조가 될 수 있다는 조건을 꼭 읽어야한다.
n명을 k개의 조로 나눌때 그 구간의 길이들 중에서 길이 간격이 가장 긴 k-1개를 제거한다.
k-1개를 제거하면 k조가 나오니까!
import sys
input = sys.stdin.readline
n,k = map(int,input().split())
heights = list(map(int,input().split()))
costs = []
for i in range(n-1):
costs.append(heights[i+1]-heights[i])
costs.sort()
print(sum(costs[:n-k]))
아래는 javascript 풀이입니다.
const inputs = require("fs").readFileSync("./dev/stdin").toString().split("\n")
let [n, k] = inputs[0].split(" ").map(Number)
let heights = inputs[1].split(" ").map(Number)
let diff = []
for (let i = 1; i < n; i++) {
diff.push(heights[i] - heights[i - 1])
}
diff.sort((a, b) => b - a)
diff = diff.slice(k - 1)
const ans = diff.reduce((acc, cur) => acc + cur, 0)
console.log(ans)
'알고리즘 > 백준' 카테고리의 다른 글
10159. 저울 (0) | 2022.03.21 |
---|---|
2638. 치즈 (0) | 2022.03.20 |
9576. 책 나눠주기 (0) | 2022.03.20 |
9205. 맥주 마시면서 걸어가기 (0) | 2022.03.10 |
2250. 트리의 높이와 너비 (0) | 2022.03.02 |