본문 바로가기
JAVA

[백준/자바] 11399번: ATM

by 동백05 2023. 7. 18.

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

 

11399번: ATM

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

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class B11399 {
    public static void main(String[] args)throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int N=Integer.parseInt(bf.readLine());

        int[] time=new int[N];
        StringTokenizer st = new StringTokenizer(bf.readLine());
        for(int i=0;i<N;i++){
            time[i]=Integer.parseInt(st.nextToken());
        }

        Arrays.sort(time);
        int answer=0;
        for(int i=0;i<N;i++){
            answer+=time[i]*(N-i);
        }

        System.out.println(answer);
        bf.close();

    }
}

내가 푼 방식이 그리디인지는 모르겠는데 아무튼 가장 적게 기다려서 하려면 짧게 거리는 사람들이 먼저 해야하기 때문에 정렬하여 합산하는 방식으로 하였다.

댓글