문제 링크입니다: https://www.acmicpc.net/problem/2212
2212번: 센서
첫째 줄에 센서의 개수 N(1<=N<=10,000), 둘째 줄에 집중국의 개수 K(1<=K<=1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 이상 있으며, 좌표의 절댓값은 1,000,000 이하이다.
www.acmicpc.net
센서의 위치를 정렬하고 서로의 인접 거리를 계산합니다.
이후 기지국을 인접 거리가 긴 위치 순서대로 K개 배치하면 수신 가능 영역의 거리의 합의 최솟값을 구할 수 있습니다.
예외 사항으로는 K가 N 이상일 경우이므로 미리 처리해줍니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include <algorithm> | |
using namespace std; | |
int main(void) | |
{ | |
ios_base::sync_with_stdio(0); | |
cin.tie(0); | |
int N, K; | |
cin >> N >> K; | |
vector<int> v(N); | |
for (int i = 0; i < N; i++) | |
{ | |
cin >> v[i]; | |
} | |
// 예외 처리 | |
if (K >= N) | |
{ | |
cout << "0"; | |
return 0; | |
} | |
sort(v.begin(), v.end()); | |
vector<int> diff(N - 1); | |
for (int i = 0; i < N - 1; i++) | |
{ | |
diff[i] = v[i + 1] - v[i]; | |
} | |
sort(diff.begin(), diff.end()); | |
int result = 0; | |
for (int i = 0; i < N - K; i++) | |
{ | |
result += diff[i]; | |
} | |
cout << result << "\n"; | |
return 0; | |
} |


개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2262번 토너먼트 만들기 (0) | 2019.11.08 |
---|---|
백준 1911번 흙길 보수하기 (0) | 2019.11.08 |
백준 1758번 알바생 강호 (0) | 2019.11.08 |
백준 1343번 폴리오미노 (0) | 2019.11.08 |
백준 1439번 뒤집기 (0) | 2019.11.08 |