미소를뿌리는감자의 코딩
[백준 2024/01/20] 11399번 ATM 본문
728x90
https://www.acmicpc.net/problem/11399
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
1. 접근 방법
이번 문제는 돈을 인출하는 데 걸리는 시간이 적은 사람이 먼저 인출하도록 하면 되는 문제였다.
따라서 인출 시간에 따라 다음과 같이 정렬 했을 때,
[1, 2, 3, 4, 5] 소요 시간은 다음의 합과 같았다.
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
즉 5*1 + 4*2 + 3*3 + 2*4 + 1*5 이었다.
따라서 걸리는 시간들을 list에 넣고, 내림차순으로 정렬한 후에 for 문을 구성해 주었다.
2. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Collections;
public class b11399 {
public static void main(String[] args) throws IOException {
List<Integer> list = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(reader.readLine());
String line = reader.readLine();
String[] line_s = line.split("\\s+");
for(int i =0; i<num;i++){
list.add(Integer.parseInt(line_s[i]));
}
list.sort(Collections.reverseOrder());
int answer = 0;
for(int i =0; i<num; i++){
answer+=(i+1)* list.get(i);
}
System.out.println(answer);
}
}
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준 2024/01/20] 1436번 영화감독 숌 (0) | 2024.01.20 |
---|---|
[백준 2024/01/20] 1934번 최소공배수 + 유클리드 호제법 (0) | 2024.01.20 |
[백준 2024/01/20] 11047번 동전 0 (0) | 2024.01.20 |
[백준 2024/01/20] 1037번 약수 (0) | 2024.01.20 |
[백준 2024/01/20] 1927번 최소 힙 (0) | 2024.01.20 |