궤도

[백준] 11399번 : ATM 본문

💻 현생/⛓ 알고리즘

[백준] 11399번 : ATM

영이오 2021. 3. 23. 15:19

문제

 


풀이

 

운영체제때 배운 디스크 스케쥴링 알고리즘들이 떠오르는 문제이다.

거기까지 가지 않더라도 문제를 읽어보면 대충 직감적으로 아~ 이거 인출시간 제일 덜 걸리는 사람 순으로 정렬하면 되겠네~ 할 것이다.

 

인출시간이 덜 걸리는 순으로 정렬했다고 치고 각 사람마다 기다리고 인출하는데 걸리는 총 시간은 어떻게 될까?

이 식을 보고 무언가 감이 온다면 그대로 코드로 작성하면 된다.

 

혹시 아직 감이 안왔을 수도 있으니...기다리는 사람의 배열을 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