https://www.acmicpc.net/problem/11399

 

11399번: ATM

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

www.acmicpc.net

 

최솟값을 구하라고 했으니,

처음부터 많은 것을 더하는 것 보단

작은걸 계속 더하는게 좋으니

정렬해서 더하면 되겠다 생각했다. 

 

 

1. 입력받고

2. 정렬하고

3. 각 순서마다 값을 더한다.

4. 3번에서 더한 값을 계속 더한다. 

 

#include <iostream>
#include <set>
using namespace std;


int main() {

	int testcase,output = 0;
	cin >> testcase;
	multiset<int> input;
	for (int i = 0,num; i < testcase; i++) {
		cin >> num;
		input.insert(num);
	}
	int sum = 0;
	for (multiset<int>::iterator it = input.begin(); it != input.end(); it++) {
		sum += *it;
		output += sum;
	}
	cout << output;
	return 0;
}

 

python 공부를 해보자해서 하려는데

python 문법 공부 제대로 안 해봐서 생소했다. 

 

testcase = int(input())
a = list(map(int,input().split()))
a.sort()
sum = 0
output = 0
for i in a:
    sum += i
    output += sum
print(output)

 

list(map(int, input().split())))

생각하자. ㅎㅎㅎ

 

이것 때문에 int형 안 더했다고,, 오류났었따,,

 

+ Recent posts