본문 바로가기
알고리즘

[BOJ/백준] 11399번 - ATM

by lewns2 2021. 7. 2.

단계별로 풀어보기 > 그리디 알고리즘 > [3단계] 11399번

 

문제 링크 : https://www.acmicpc.net/problem/11399

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

 

 

문제 요약

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
반응형