알고리즘

[BOJ] 11399 ATM

졔졔311 2023. 6. 1. 20:45
728x90
반응형

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

 

11399번: ATM

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

www.acmicpc.net

 

---------------------------------------------------핵심 알고리즘--------------------------------------------

 

sort + greedy

 

---------------------------------------------------풀이----------------------------------------------------

 

첫 번째 사람의 시간은 N번 더해지고,

두 번째 사람의 시간은 N-1번 더해지고,

세 번째 사람의 시간은 N-2번 더해지는 것을 반복한다.

즉, 작은 숫자가 앞에 올수록 유리한 것이다.

따라서 오름차순 정렬을 한 뒤, N-i를 곱해 전부 더해준다.

#define FASTIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <queue>
#include <cmath>
#include <stack>
#include <limits.h>

using namespace std;

int Pi[1001] = {0, };
int N;

// 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값=?
int main(void){
    FASTIO;
    cin >> N;
    for(int i = 0; i < N; i++){
        cin >> Pi[i];
    }
    sort(Pi, Pi+N);
    int ans = 0;
    for(int i = 0; i < N; i++){
        ans += Pi[i]*(N-i);
    }
    cout << ans << "\n";
    return 0;
}

 

---------------------------------------------------후기----------------------------------------------------

 

예시가 없었으면 파악하는데 조금 걸렸을 것 같다.

728x90
반응형

'알고리즘' 카테고리의 다른 글

[BOJ] 11726 2xn 타일링  (1) 2023.06.01
[BOJ] 11723 집합  (0) 2023.06.01
[BOJ] 9095 1, 2, 3 더하기  (0) 2023.06.01
[BOJ] 7662 이중 우선순위 큐  (0) 2023.06.01
[BOJ] 7576 토마토  (0) 2023.06.01