알고리즘 문제 풀이를 블로그에 올리는 이유는 풀이, 코드를 기록하기 위함이니
앞으로 문제를 다 긁어오기보다 링크만 두고 풀이가 잘 보이도록 포스팅 할 예정입니다!
이 문제는 사람마다 각각 다른 ATM 사용 시간을 정렬하여 전체 인원이 ATM을 사용하는 시간의 최소값을 연산하는 문제이다.
그리디 알고리즘
을 통해 최소값을 연산for(int i = 0; i < time.length; i++) {sum += time[i] * (time.length - i);}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[] time = new int[N];
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < time.length; i++) {
time[i] = Integer.parseInt(st.nextToken());
}
System.out.println(greedySum(time));
}
static int greedySum(int[] time) {
Arrays.sort(time);
int sum = 0;
for(int i = 0; i < time.length; i++) {
sum += time[i] * (time.length - i);
}
return sum;
}
}