IT 기획의 길

백준 11399번 ATM [JAVA] 본문

알고리즘(백준)/정렬

백준 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);
		
	}
}