sm 기술 블로그

148. 11399(ATM) - 자바 본문

문제/백준_자바

148. 11399(ATM) - 자바

sm_hope 2022. 7. 18. 17:39
import java.util.*;
import java.io.*;

class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		String[] sBits = br.readLine().split(" ");
		int[] P = new int[N];
		int tmp = 0;
		
		for (int i = 0; i < N; i++) {
			P[i] = Integer.parseInt(sBits[i]);
		}
		
		Arrays.sort(P);
		
		for (int i = 0; i < N; i++) {
			tmp += P[i];
			P[i] = tmp;
		}

		System.out.println(Arrays.stream(P).sum());

	}
}

문제요약

N명의 사람이 ATM에서 돈을 뽑을 때 가장 적게 드는 방법은?

설명

각 사람이 P시간이 걸린다.

시간을 오름차순으로 정렬하면 필요한 시간의 합의 최소값을 구할 수 있다.

 

		Arrays.sort(P);

따라서 먼저 받은 값을 오름차순으로 정렬한다.

 

		for (int i = 0; i < N; i++) {
			tmp += P[i];
			P[i] = tmp;
		}

누적합을 저장해준다.

 

		System.out.println(Arrays.stream(P).sum());

배열의 모든 값을 더해주면 답을 구할 수 있다.

Arrays.stream(배열).sum()는 배열의 합을 구하는 함수이다.

Comments