백준 - ATM [11399]

노력하는 배짱이·2020년 12월 29일
0

백준 알고리즘

목록 보기
7/35
post-thumbnail
post-custom-banner

문제

[요약]

  • 1대 존재하는 ATM 기기에 N명이 줄 서 있다.
  • i번 사람이 돈을 인출하는데 걸리는 시간은 PiP_i이다.
  • 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하라

입력

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

출력

첫째 줄에 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 출력한다.

풀이

시간의 합의 최솟값을 구하는 문제이기 때문에 주어진 시간이 적은 수를 먼저 처리하는 것이 좋다. 따라서 주어진 시간을 오름차순으로 정렬한 뒤에 합의 최솟값을 구해주면 된다.

  • 시간의 합이기 때문에 이전 시간 값을 기억해줘야 한다는 점을 기억하자.

코드

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		
		ArrayList<Integer> al = new ArrayList<>();
		
		for(int i=0; i<n; i++) {
			al.add(sc.nextInt());
		}
		
		Collections.sort(al);
		
		int result = 0;
		int prev = 0;
		
		for(int r : al) {
			r += prev;
			result += r;
			prev = r;
			
		}
		
		System.out.println(result);

	}

}
post-custom-banner

0개의 댓글