코테/백준
[백준] 20186 수 고르기 - C++
gayoungeeda
2023. 7. 14. 01:13
728x90
https://www.acmicpc.net/problem/20186
문제 설명
문제 풀이
#include<stdio.h>
#include<algorithm>
using namespace std;
int arr[5000];
int answer;
int main()
{
int n, k, max = 0, tmp = 0;
int i;
scanf("%d%d", &n, &k);
int cnt = n - 1;
for(i = 0; i < n; i++)
scanf("%d", &arr[i]);
sort(arr, arr + n);
for(i = 0; i < k; i++)
answer += (arr[cnt--] - i);
printf("%d", answer);
return 0;
}
문제 그대로 구현을 하려면 k만큼 중첩 반복문을 써야하기 때문에 구현 문제는 아니고, 빠르게 구할 수 있는 법을 생각했다.
정렬해서 큰 순서대로 누적만 하면 되기때문에 오름차순이든 내림차순이든 상관은 없을거라 생각해서 오름차순으로 정렬 후 역순으로 배열에 접근하는 방식으로 풀었다.