링크 : www.acmicpc.net/problem/11399
1. 오름차순으로 정렬한다.
2. 0, 0~1, 0~2, ... 0~N번째 합을 누적시킨다.
누적시키는 방법은 2중 for문 구현도 있고, 아래처럼 DP를 사용해도 무방하다.
별 생각 없이 풀 수 있었던 문제였다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(NULL);
cin.tie(NULL);
int n = 0, arr[1001], ans = 0;
cin >> n;
for (int i = 0; i < n; i++) cin >> arr[i];
sort(arr, arr+n);
ans += arr[0];
for (int i = 1; i < n; i++) {
arr[i] = arr[i-1] + arr[i];
ans += arr[i];
}
cout << ans << "\n";
return 0;
}
'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글
#2609번 최대공약수와 최대공배수 (C++) (0) | 2020.11.02 |
---|---|
#1946번 신입 사원 (C++) (0) | 2020.11.01 |
#1931번 회의실배정 (C++) (0) | 2020.10.30 |
#11047번 동전 0 (C++) (0) | 2020.10.28 |
#2583번 영역구하기 (C++) (0) | 2020.10.20 |