728x90
⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️
https://www.acmicpc.net/problem/13164
Code
n, k = map(int, input().split())
number = list(map(int, input().split()))
result = []
sum = 0
for i in range(n-1):
result.append(number[i+1] - number[i])
result.sort()
for i in range(n-k):
sum += result[i]
print(sum)
Code 필수 요소
1. 값을 분리하여 배열에 넣는 방법
2. 계산 알고리즘
이것만 생각해내면 절반은 끝났다.
//값을 분리하여 배열에 넣는 방법
map을 이용해서 하나나 접근하지 않아도 되게 해주고, split을 이용해 하나씩 나누어준다.
// 계산 알고리즘연속된 두 수의 차이를 새로운 배열에 기록해 준다. 인원들을 그룹을 짓는다면 배열의 숫자 하나를 무시 할 수 있게 되는 것이다. 그렇기때문에 배열에 입력한 두 수의 차이를 sort해주고, n-k의 갯수만큼 더해준다면 결과가 나온다.
생각보다 쉬웠다. 알고리즘을 생각해내는 것이 헷갈렸지만 그래도 할만했다. 근데 그리디 알고리즘을 쓰라고 했는데 이런식으로 풀어버렸네;; 조만간 다시 한번 그리디 알고리즘으로 풀어봐야 할거같다.
-꿑-
728x90