본문 바로가기
알고리즘

백준 C++ - 센서(2212) 탐욕법

by jun.s.gi 2023. 4. 18.
728x90

https://www.acmicpc.net/problem/2212

 

2212번: 센서

첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있

www.acmicpc.net

 

 

1. 집중국이 한 개일 때 최대 수신 거리를 구합니다.

2. 센서 사이의 거리를 구해 temp 배열에 저장합니다.

3. 센서 사이의 거리가 큰 순서대로 정렬합니다. (내림차순)

4. 집중국 - 1만큼 최대 수신 거리에서 센서 사이의 거리를 뺍니다.

5. 끝

#pragma warning(disable:4996)
#include <stdio.h>
#include<algorithm>
using namespace std;
int n, k, ans;
int arr[10100];
int temp[10010];
int check(int x, int y)
{
	return x > y;
}
int main()
{
	scanf("%d%d", &n, &k);
	for (int i = 0; i < n; i++)
		scanf("%d", &arr[i]);
	sort(arr, arr + n);
	ans = arr[n - 1] - arr[0];
	for (int i = 1; i < n; i++)
		temp[i - 1] = arr[i] - arr[i - 1];
	sort(temp, temp + n - 1, check);
	for (int i = 0; i < k - 1; i++)
		ans -= temp[i];
	printf("%d", ans);
	return 0;
}

비슷한 문제

https://junsgi.tistory.com/37

 

C++ - Greedy algorithm ( 헛간 고치기 )

그리디 알고리즘이란? - 욕심쟁이 알고리즘, 탐욕 알고리즘으로도 알려져있다. - 최적해를 구하는 데에 사용되는 근사적인 방법으로, 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이

junsgi.tistory.com

 

728x90