본문 바로가기
알고리즘/백준 문제풀이

백준 [자바 java] 11399 : ATM

by 잔디🌿 2023. 7. 23.

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

     

    11399번: ATM

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

    www.acmicpc.net

    이 문제도 예전에 c언어로 풀었어서 java로 다시 한번 풀었다.

    사람마다 atm을 이용하는 시간이 주어지고 이를 사용하는 사람들이 기다리는 전체 시간의 최솟값을 출력하는 문제이다. 이때 이용시간이 작은 사람 순서대로 정렬한 후 이 순서대로 atm을 이용하면 되니까, 정렬한 후 여기다가 (전체사람 수 - 해당 수의 배열 순서)를 곱하면 된다. (첫번째 사람이 돈을 뽑을 동안 기다리는 사람들의 수는 전체이고, 두번째 사람이 돈을 뽑을 동안 기다리는 수는 전체-1이니까)

     

    코드설명

    import java.util.*;
    import java.io.*;
    import java.math.*;
    
    
    public class Main {
    
    
    
        public static void main(String[] args) throws IOException {
            BufferedReader br  = new BufferedReader(new InputStreamReader(System.in));
    
            int n = Integer.parseInt(br.readLine());
    
            StringTokenizer st = new StringTokenizer(br.readLine());
            int[] arr = new int[n];
    
    
            for(int i = 0;i<n;i++){
                arr[i] = Integer.parseInt(st.nextToken());
            }
    
            Arrays.sort(arr);
    
            int ans = 0;
    
            for(int i = 0;i<n;i++){
                ans += arr[i] * (n-i);
            }
    
            System.out.println(ans);
    
        }
    }