알고리즘(백준)/정렬
백준 11399번 ATM [JAVA]
완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다
2020. 12. 25. 21:21
알고리즘 설계:
1. 먼저 사람의 수를 입력받는다.
2. 각 사람의 인출 시간과 각 사람의 앞사람의 인출시간까지 고려한 인출시간을 구하는 배열을 정의한다
3. 적게 걸리는 사람부터 줄 서는게 각 사람의 앞사람의 인출시간까지 고려한 인출시간을 최소로 만든다
4. 각 사람의 인출시간을 입력으로 받고 그 값을 배열에 담아 오름차순으로 정렬한뒤 그 값에 따라 각 사람의 앞사람의 인출시간까지 고려한 총 인출시간을 구한다
import java.util.*;
public class ATM {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int time[]=new int[n]; //각 사람의 인출 시간
int Alltime[]=new int[n];// 앞 사람의 인출 시간까지 고려한 인출시간
int sum=0;
for(int i=0;i<n;i++) {
time[i]=scan.nextInt();
}
Arrays.sort(time); //적게 걸리는 사람부터 줄 서는게 최소 인출시간을 구하는 방법이다
for(int i=0;i<n;i++) {
int j=i;
while(j>=0) {
Alltime[i]+=time[j];
j--;
}
}
for(int i=0;i<n;i++) {
sum+=Alltime[i]; //모든 사람의 인출시간 총합(최솟값)
}
System.out.println(sum);
}
}