문제 조건

 

 

문제

 

입력

예제 입력 1

 

출력

예제 출력 1

 

문제 분석

- 돈을 인출하는데 걸리는 시간을 오름차순으로 정렬해야 시간의 합이 최소값이 된다. 

 

문제 풀이

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

'Algorithm > BOJ' 카테고리의 다른 글

BOJ 3985 롤케이크  (0) 2021.03.04
BOJ 2798 블랙잭  (0) 2021.03.03
BOJ 2941 크로아티아알파벳  (0) 2021.03.03
BOJ 2999 비밀이메일  (0) 2021.03.01
BOJ 17413 단어뒤집기2  (0) 2021.02.26