카테고리 없음
[백준] 23843: 콘센트 - JAVA
Baspo8
2024. 5. 22. 00:02
https://www.acmicpc.net/problem/23843
풀이
충전기 m개로 n개의 전자기기를 충전해야한다.
전자기기마다 충전이 완료되는데 필요한 시간이 달라서 충전기에 전자기기를 적절하게 배치해야한다.
충전기가 비어있다면 충전에 걸리는 시간이 가장 긴 기기를 배치하는 게 적절했다.
따라서 우선순위큐를 이용해 시간이 오래걸리는 순으로 뽑아서 충전기에 넣었다.
충전기에 넣으면서 걸리는 시간을 정답에 갱신하면된다.
메모리: 15476KB
시간: 180ms
언어: Java 11
import java.io.*;
import java.util.*;
public class Main {
static class Charger {
PriorityQueue<Integer> chargers;
PriorityQueue<Integer> electronics;
int count;
public Charger(String input1, String input2) {
chargers = new PriorityQueue<>();
electronics = new PriorityQueue<>(Collections.reverseOrder());
StringTokenizer st = new StringTokenizer(input1);
int n = Integer.parseInt(st.nextToken());
count = Integer.parseInt(st.nextToken());
st = new StringTokenizer(input2);
for (int i = 0; i < n; i++) {
electronics.add(Integer.parseInt(st.nextToken()));
}
}
public void charge() {
int result = 0;
while (!electronics.isEmpty()) {
int tmp = 0;
if (chargers.size() < count) {
tmp = electronics.poll();
} else {
tmp = chargers.poll() + electronics.poll();
}
chargers.add(tmp);
result = Math.max(tmp, result);
}
System.out.println(result);
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Charger charger = new Charger(br.readLine(), br.readLine());
charger.charge();
}
}