Notice
Recent Posts
Recent Comments
Link
궤도
[백준] 11399번 : ATM 본문
문제
풀이
운영체제때 배운 디스크 스케쥴링 알고리즘들이 떠오르는 문제이다.
거기까지 가지 않더라도 문제를 읽어보면 대충 직감적으로 아~ 이거 인출시간 제일 덜 걸리는 사람 순으로 정렬하면 되겠네~ 할 것이다.
인출시간이 덜 걸리는 순으로 정렬했다고 치고 각 사람마다 기다리고 인출하는데 걸리는 총 시간은 어떻게 될까?
이 식을 보고 무언가 감이 온다면 그대로 코드로 작성하면 된다.
혹시 아직 감이 안왔을 수도 있으니...기다리는 사람의 배열을 arr이라고 하고 걸리는 총 시간을 sum이라고 하면
sum = arr[0]*N + arr[1]*(N-1) + arr[2]*(N-2) + ... + arr[N-1]*1
이다.
소스코드
#include <iostream>
#include <algorithm>
using namespace std;
int arr[1001] = {0,};
int main() {
int N, sum = 0;
cin >> N;
for (int i = 0; i < N; i++)
cin >> arr[i];
sort(arr, arr + N); //걸리는 시간이 작은 사람이 앞에 오도록
for (int i = 0; i < N; i++)
sum += (arr[i] * (N - i));
cout << sum;
}
Comments