4주차(그리디) - [C++]백준11399 ATM

4주차(그리디) - [C++]백준11399 ATM

백준11399 ATM 링크

문제

문제

예제 입력

예제


코드

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> arr;
int n, result = 0;

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	cin >> n;
	int num;
	for (int i = 0; i < n; i++) {
		cin >> num;
		arr.push_back(num);
	}
	sort(arr.begin(), arr.end());

	for (int i = 0; i < n; i++) {
		result += arr[i] * (n - i);
	}
	cout << result;
}

설명

이 문제는 (인출하는 사람들의 번호) X (순서에 따라 걸리는 시간)에 따라 시간이 달라집니다. 다양한 순서중에서 최소 시간인 최솟값을 구하는 것입니다. C++ STL(표준 템플릿 라이브러리)에서 algorithmvector를 사용하여 구현했습니다. 일단 각 순서에 걸리는 시간을 받아 정렬하여 처음부터 가장 높은 번호인 사람을 곱하면서 최소 시간을 구했습니다. 결국 번호 1 2 3 4 5중에서 1번은 걸리는 시간이 가장 높은 것을 선택하는 것이 최소 시간을 얻기 위한 최선의 선택을 하는 것입니다.

<algorithm>
-sort(시작, 끝, 비교함수) : 배열의 크기만큼 정렬

<vector>
-vector<자료형> 변수명; : 배열 자료구조 사용

결과

결과


© 2022. All rights reserved. 신동민의 블로그