https://www.acmicpc.net/problem/2212
2212번: 센서
첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있
www.acmicpc.net
이 문제는 그리디 알고리즘을 활용해서 해결할 수 있다.
센서들 값을 입력받고 배열을 정렬한다.
센서들의 값이 정렬되었으므로 센서들의 차이를 통해 거리를 계산하고 배열에 삽입한다.
그후 거리 배열을 K-1만큼 pop한 후 배열의 크기를 출력한다.
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int N,K;
bool sorter(int a, int b) {
return a > b;
}
int main() {
cin >> N;
cin >> K;
vector<int> sensors;
for (int i = 0; i < N; i++) {
int sensor;
cin >> sensor;
sensors.push_back(sensor);
}
sort(sensors.begin(), sensors.end());
vector<int> distance;
for (int i = 0; i < N - 1; i++) {
distance.push_back(sensors[i + 1] - sensors[i]);
}
if (distance.empty()) {
cout << 0 << '\n';
return 0;
}
sort(distance.begin(), distance.end());
for (int i = 0; i < K - 1; i++)
distance.pop_back();
int result = 0;
for (int i = 0; i < distance.size(); i++)
result += distance[i];
cout << result << '\n';
}
'Baekjoon Review' 카테고리의 다른 글
[Gold 4] 1967번 트리의 지름 (0) | 2023.11.28 |
---|---|
[Gold 5] 11000번 강의실 배정 (0) | 2023.11.27 |
[Silver 3] 11659번 구간 합 구하기 4 (0) | 2023.11.27 |
[Silver 4] 11399번 ATM (0) | 2023.11.27 |
[Silver I] 1931번 회의실 배정 (0) | 2023.11.27 |