어제의 나보다 성장한 오늘의 나

[백준][11399][Java] ATM 본문

알고리즘/백준(BOJ)

[백준][11399][Java] ATM

NineOne 2021. 3. 30. 20:22

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

 

11399번: ATM

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

www.acmicpc.net

문제풀이

간단한 문제이다. 필요한 시간의 합을 최소로 만들 수 있는 방법은 돈을 인출하는데 걸리는 시간인 Pi을 오름차순으로 정렬한다. 정렬된 배열 배열에 있는 값들을 arr[i] += arr[i-1]로 더 해가면 된다.

 

코드

import java.io.*;
import java.util.*;

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++) {
			int a = Integer.parseInt(st.nextToken());
			arr[i] = a;
		}
		
		Arrays.sort(arr);
		
		for(int i=1; i<arr.length; i++) {
			arr[i] += arr[i-1];
		}
		
		System.out.println(Arrays.stream(arr).sum());
	}

}

 

Comments