ATM (백준 11399번)

박영준·2023년 5월 27일
0

코딩테스트

목록 보기
155/300

메모

/*
ATM = 1대
N = 기다리는 사람 수 (1번 ~ N번) (1 ≤ N ≤ 1,000)
Pi = i번 사람이 돈을 인출하는데 걸리는 시간 (1 ≤ Pi ≤ 1,000)

각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값?
*/

해결법

방법 1

import java.util.Scanner;
import java.util.Arrays;
 
public class Main {
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		
		int N = in.nextInt();
		
		int[] arr = new int[N];		// 기다리는 사람 수(N) 만큼 배열 arr 생성
		
		for (int i = 0; i < N; i++) {		// 배열 arr 에 담는다
			arr[i] = in.nextInt();
		}
		
		Arrays.sort(arr);		// 오름차순 정렬
 
		int accum = 0;	// 시간의 누적 합
		int sum = 0;	// 모든 사람의 시간 최종 합 
				
		for (int i = 0; i < N; i++) {	
			sum += arr[i] + accum;		// 최종 합에 누적 시간을 더해준다
			accum += arr[i];		// 계속 더해지는 누적시간을 갱신시키고, for문으로 다시 들어감
		}
        
		System.out.println(sum);
	}
}
  • sum += arr[i] + accum;
    • 배열의 앞에서부터 누적해서 더해간다.

ATM (백준 11399번)

profile
개발자로 거듭나기!

0개의 댓글