하루에 한 문제

[BOJ-11399]ATM -Java 본문

알고리즘/백준

[BOJ-11399]ATM -Java

dkwjdi 2021. 3. 30. 22:22

https://www.acmicpc.net/problem/11399

 

11399번: ATM

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

www.acmicpc.net

package algo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

//7분
public class boj_11399_ATM {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = null;
		
		int N=Integer.parseInt(br.readLine());
		int [] p=new int[N];
		
		st=new StringTokenizer(br.readLine());
		
		for(int i=0; i<N; i++) {
			p[i]=Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(p);
		
		int result=p[0];
		
		for(int i=1; i<N; i++) {
			p[i]=p[i-1]+p[i];
			result+=p[i];
		}
		
		System.out.println(result);
		
	}

}

소요시간 : 7분

 

로직은 쉽습니다.

문제를 찬찬히 읽어보면 디스크 스케쥴링의 SJF와 비슷하다는 느낌이 드실겁니다.

 

1. 배열을 정렬한다

2. 누적합을 구한다.

3. 누적합을 더한다.

 

끝입니다~~~~

 

Comments