카테고리 없음
[백준/BOJ] 11399번 : ATM- Java (자바)
연주우
2021. 3. 26. 22:51
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
[문제]
[Soultion]
🤔 앞에 사람이 일찍 끝내야 각 사람이 돈을 인출하는 데 필요한 시간이 최소값이 된다. 왜냐하면 앞 사람이 인출하는 시간까지 누적해야되기 때문이다. 그렇기에 오름차순 배열로 순서 정리를 해줘서, 소요 시간이 가장 적은 사람이 앞에 오게끔 만들어야 한다.
🤔이전까지 누적된 대기 시간 변수를 구하고
그전까지의 누적합 + 본인 순서에 걸리는 시간의 총합 변수를 구하면 된다.
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int people = sc.nextInt();
int [] arr = new int [people];
for(int i=0; i<people; i++)
{
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
//함수 인풋으로는 배열 형태를 받으며 받은 배열의 원소를 오름차순으로 정리합니다.
//보시다시피 리턴형은 없습니다.
int prev = 0;
int sum = 0;
for(int i=0; i<people; i++)
{
sum+= prev + arr[i];
prev+= arr[i];
}
System.out.println(sum);
}
}
Stranger's Lab 님의 티스토리 블로그가 잘 정리되어 있어, 그 분의 해설을 보고 많이 도움 받았다.