반응형
이 문제는 백준 단계별 풀어보기 그리디알고리즘에 분류된 문제이다.
이 문제는 정렬을 사용하면 쉽게 풀 수 있다.
N번째 사용자가 ATM사용을 마무리하는 시간은
첫번째 사용자가 이용하는데 걸린 시간 + 두번째 사용자가 이용하는데 걸린 시간 + 세번째 사용자가 이용하는데 걸린 시간 + --- N번째 사용자가 이용하는데 걸린 시간 이기때문에 오름차순 정렬시 N번째 사용자가 ATM사용을 마무리하는 시간이 최소가 된다.
Arrays.sort() 를 이용하여 오름차순 정렬을 하였다.
만약 오름차순이 아닌 다른 정렬기준을 사용하는 문제였다면 Comparator을 이용하여 정렬기준을 구현하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int N, result, time;
static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new int[N];
result = 0;
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str, " ");
for (int i = 0; N > i; ++i) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
for (int i = 0; N > i; ++i) {
int j = i;
time = arr[j];
while (j != 0) {
j--;
time += arr[j];
}
result = result + time;
}
System.out.print(result);
}
}
반응형
'컴퓨터 > 백준' 카테고리의 다른 글
JAVA - 백준 알고리즘 - 1700 멀티탭 스케줄링 (0) | 2020.02.26 |
---|---|
JAVA - 백준 알고리즘 - 1080 행렬 (0) | 2020.02.26 |
JAVA - 백준 알고리즘 - 1969 DNA (0) | 2020.02.25 |
JAVA - 백준 알고리즘 - 1541 잃어버린 괄호 (0) | 2020.02.25 |
JAVA - 백준 알고리즘 - 1931번 회의실 배정 (0) | 2020.02.25 |