문제접근
놓쳤던 부분
•
문제 자체를 이해를 못 했음
•
for문을 n - k만큼만 돌리는 이유
◦
dist는 센서간의 차이 벡터이기 때문에 크기가 n - 1
◦
dist는 k개의 집중국인 구간과 그렇지 않은 구간이 합쳐져 있음
▪
집중국이 k개이면 그 간격의 개수는 k - 1, 따라서 벡터에서 더해야할 집중국의 개수는 k - 1을 빼면됨
◦
n - 1 - (k - 1) = n - k
코드
2184 KB
0 ms
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(void)
{
int n,k;
vector<int> sensor;
vector<int> dist;
int answer = 0;
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
sensor.resize(n);
dist.resize(n - 1);
for (int i = 0; i < n; i++)
cin >> sensor[i];
sort(sensor.begin(), sensor.end());
for(int i = 0; i < n - 1; i++)
dist[i] = sensor[i + 1] - sensor[i];
sort(dist.begin(), dist.end());
for (int i = 0; i < n - k; i++)
answer += dist[i];
cout << answer;
return (0);
}
C++
복사