요새는 문제를 알고리즘 분류별로 풀고 있어서 해당 문제가 그리디 알고리즘 문제인 것은 알고 있었습니다. 그런데 이 문제는 친절하게도 그리디 알고리즘이 가능하다고 문제에서 힌트를 주고있죠. 인출하는데 각 사람들의 시간이 주어지는데 시간이 적게 걸리는 사람을 먼저 줄세우면 최적의 해가 나온다고 알려주고 있습니다.
그래서 아주 쉽게 풀 수 있었습니다.
아래는 제 코드입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class B11399 {
private static int N;
private static int time[];
private static int res[];
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
time = new int[N];
res = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i<N; i++) {
time[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(time);
res[0] = time[0];
for(int i=1; i<N; i++) {
res[i] = res[i-1] + time[i];
}
int totalTime = 0;
for(int i=0; i<N; i++) {
totalTime = totalTime + res[i];
}
System.out.println(totalTime);
}
}
'개발 > 알고리즘' 카테고리의 다른 글
백준 1931 그리디 알고리즘 (0) | 2021.02.25 |
---|---|
백준 11047번 그리디 알고리즘 (0) | 2021.02.23 |
백준 알고리즘 2839 (0) | 2021.02.19 |
알고리즘 백준 2669 (0) | 2021.02.16 |
알고리즘 그래프 백준 2667 (0) | 2021.02.16 |