sm 기술 블로그
148. 11399(ATM) - 자바 본문
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()는 배열의 합을 구하는 함수이다.
'문제 > 백준_자바' 카테고리의 다른 글
150. 13305(주유소) - 자바 (0) | 2022.07.19 |
---|---|
149. 1541(잃어버린 괄호) - 자바 (0) | 2022.07.18 |
147. 1931(회의실 배정) - 자바 (0) | 2022.07.17 |
146. 11047(동전 0) - 자바 (0) | 2022.07.17 |
145. 11660(구간 합 구하기 5) - 자바 (0) | 2022.07.16 |
Comments