단계별로 풀어보기 > 그리디 알고리즘 > [3단계] 11399번
문제 링크 : https://www.acmicpc.net/problem/11399
문제 요약
1. 주어진 수에 대한 합의 최솟값을 구하기 위한 방법을 생각한다.
입력 복사
예제 입력 1 >> 출력 : 32
5
3 1 4 3 2
CODE
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
int main() {
int n;
cin >> n;
int t[1000];
for(int i=1; i<n+1; i++) {
cin >> t[i];
}
sort(t, t+n+1);
int sum=0;
for(int i=1; i<n+1; i++) {
sum += t[i] * (n-i+1);
}
cout << sum << endl;
}
문제 풀이
1. 합의 최소값을 구하기 위해 오름차순을 한다.
2. 첫번째 수는 N번, 두번째 수는 N-1번 ... 을 더하는 방식을 사용했다.
주의할 점
일반적으로 for문을 구현할 때, int i=0을 사용한다.
하지만 이 문제는 N을 활용하여 정답을 도출하기 때문에, 달리 할 필요가 있다!
728x90
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/백준] 1904번 - 01타일 (0) | 2021.07.11 |
---|---|
[BOJ/백준] 9461번 - 파도 (0) | 2021.07.09 |
[BOJ/백준] 1931번 - 회의실 배정 (0) | 2021.07.02 |
[BOJ/백준] 11047번 - 동전 0 (0) | 2021.06.25 |
[C++] 그리디 알고리즘(1) - 동전 문제와 주의 사항 (0) | 2021.06.25 |