https://www.acmicpc.net/problem/11399
해설
이번 문제는 그리디를 적용하는 문제이다.
예제에서
총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우
줄을 [2,5,1,4,3] 으로 서게 되면 최소가 된다고 하였다.
여기서 중요한 점은 [2, 5, 1, 4, 3]으로 줄을 서면 1,2,3,3,4 로 값이 정렬된다는 점이다.
그렇다.
받는 값을 정렬 시켜 더해주면 된다.
˙˙˙
소스코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
vector<int >g;
int n;
cin >> n;
for(int i=0, a; i<n; i++)
cin >> a, g.push_back(a);
sort(g.begin(), g.end());
int cnt = 0;
for(int i=0; i<n; i++)
for(int j=0; j<=i; j++){
cnt += g[j];
}
cout << cnt << '\n';
}
'백준 문제 풀이' 카테고리의 다른 글
[백준 1049] 기타줄 (0) | 2020.03.25 |
---|---|
[백준 1946] 신입 사원 (0) | 2020.03.24 |
[백준 1931] 회의실배정 (0) | 2020.03.23 |
[백준 11047] 동전 0 (0) | 2020.03.23 |
[백준 5585] 거스름돈 (0) | 2020.03.23 |
댓글