Algorithm/BOJ
BOJ 11399 ATM
wow
2021. 2. 17. 17:20
문제 조건
문제
입력
출력
문제 분석
- 돈을 인출하는데 걸리는 시간을 오름차순으로 정렬해야 시간의 합이 최소값이 된다.
문제 풀이
1) 1차원 배열이기때문에 Arrays.sort(대상 배열)로 정렬한다.
2) 재귀함수를 통해 각 자리의 숫자를 더한다. 이 때, 각 자리의 숫자는 배열 0인덱스부터 해당 자리까지 숫자를 더한다.
-> for문 사용해도 무관
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
private static int[] arr;
private static int N, sum;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
StringTokenizer st;
arr = new int[N];
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
rec(0);
System.out.println(sum);
}// main
private static void rec(int idx) {
if (idx == N)
return;
for (int i = 0; i <= idx; i++) {
sum += arr[i];
}
rec(idx + 1);
}
}// class-end