문제 링크 : https://www.acmicpc.net/problem/2212
2212번: 센서
첫째 줄에 센서의 개수 N(1<=N<=10,000), 둘째 줄에 집중국의 개수 K(1<=K<=1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 이상 있으며
www.acmicpc.net
그리디 알고리즘을 이용해서 풀 수 있는 문제입니다.
코드
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
int N = 0, K = 0;
int BiggestSTS = 0;
vector<int> Sencer;
vector<int> STS;
cin >> N >> K;
for(int i = 0; i < N; i++)
{
int in;
cin >> in;
Sencer.push_back(in);
}
sort(Sencer.begin(), Sencer.end(), less<int>());
if(N<=K)
{
cout << 0 << endl;
return 0;
}
for(int j = 0; j < N-1; j++)
{
int sts = Sencer[j+1]-Sencer[j];
STS.push_back(sts);
}
sort(STS.begin(), STS.end(), greater<int>());
BiggestSTS = Sencer.back() - *(Sencer.begin());
for(int p = 0; p < K - 1; p++)
BiggestSTS = BiggestSTS - STS.at(p);
cout << BiggestSTS << endl;
return 0;
}
'알고리즘 문제' 카테고리의 다른 글
[알고리즘 문제/C++]백준 2503번 : 숫자 야구 (0) | 2021.01.15 |
---|---|
[알고리즘 문제/C++]백준 2231번 : 분해합 (0) | 2021.01.15 |
[알고리즘 문제/C++]백준 2178번 : 미로 탐색 (0) | 2021.01.15 |
[알고리즘 문제/C++]백준 1931번 : 회의실 배정 (0) | 2021.01.15 |
[알고리즘 문제/C++]백준 1743번 : 음식물 피하기 (0) | 2021.01.10 |