728x90
시간 제한 : 2초
메모리 제한 : 128MB
입력
첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같은 자연수이다.
출력
강호가 받을 수 있는 팁의 최대값을 출력한다.
소스코드
#include <iostream> #include <vector> #include <algorithm> #include <functional> using namespace std; int main(void) { int n, tmp; long long sum = 0; vector<int> arr; cin >> n; for (int i = 0; i < n; i++) { cin >> tmp; arr.push_back(tmp); } sort(arr.begin(), arr.end(), greater<int>()); for (int i = 0; i < n; i++) { if (arr[i] - i <= 0) break; sum += (arr[i] - i); } cout << sum; }
Tip
문제는 간단하게 풀린다. 기본적으로 팁을 많이 받으려면 팁을 많이 줄 생각을 하고 있는 사람들을 우선 순위로 배치하면 되고, 이는 정렬로 해결한다. 정렬한 값을 바탕으로 적합하게 처리하면 된다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 5426 - 비밀 편지(ACM-ICPC Reginoal) (0) | 2017.12.26 |
---|---|
백준] 6321 - IBM 빼기 1(ACM-ICPC Regional) (0) | 2017.12.24 |
백준] 2991 - 사나운 개(COCI 2007/2008) (0) | 2017.12.18 |
백준] 10409 - 서버(ACM-ICPC) (0) | 2017.12.17 |
백준] 10709 - 기상캐스터(JOI 2015) (0) | 2017.12.16 |