https://www.acmicpc.net/problem/16112
π©λ¬Έμ
πλ¬Έμ ν΄κ²°
1. νμ±νλ μ€ν€μ κ²½νμΉκ° 0μ΄ λκ³ νμ±νλμ΄μλ μ€ν€μ κ·Έ κ°μ΄ λν΄μ§λ€.
2.μ΅λκ°μ ꡬνλ €λ©΄ μμ κ²½νμΉλΆν° νμ±νλμ΄μΌνλ€.
=>νμ±νλ λ κ²½νμΉκ° 0μ΄λλ λͺ¨λ νμ±νκ° λμμλ λ¨μμλ μ€ν€μ κ²½νμΉκ° ν΄μλ‘ μ’κΈ° λλ¬Έμ΄λ€.
=>νμ±νκ°―μκ° μ΅λκ° λλ©΄ κ·Έ μ΄νλ‘ λ¨μ μ€ν€μ νμ±νκ°―μλ§νΌ κ²½νμΉκ° λν΄μ§λ€.
μ°Έκ³ λΈλ‘κ·Έ : https://blog.naver.com/hoo3164/222718534082
μλ₯Ό λ€μ΄ μ€ν€ 6κ° , μ΅λ νμ±ν μ€ν€ κ°μ(3κ°)
1λ²μ§Έ νμ±ν ->μν₯λ°λ μ€ν€x
2λ²μ§Έ νμ±ν ->μν₯λ°λ μ€ν€1κ°
3λ²μ§Έ νμ±ν ->μν₯λ°λ μ€ν€2κ°
4λ²μ§Έ νμ±ν -> μν₯λ°λ μ€ν€ 3κ°
5λ²μ§Έ νμ±ν -> (2,3,4)λ²μ§Ένμ±ν λ μ€ν€ = μν₯λ°λ μ€ν€ 3κ°
6λ²μ§Έ νμ±ν -> (3,4,5)λ²μ§Έ νμ±ν λ μ€ν€ = μν₯λ°λ μ€ν€ 3κ°
μ°μ μμ ν μκ° λ³΅μ‘λλ μ λ ₯: O(log n), peek: O(1), poll: O(log n) μ μκ°λ³΅μ‘λ
3. μ°μ μμν(A)μ κ²½νμΉλ₯Ό μ λ ₯ν΄μ€λ€
4.μ΅λ νμ±ν μ€ν€κ°μκ° λκΈ° μ κΉμ§λ ν΄λΉ κ°μ νμμ λΉΌλ΄κ³ νμ±ν μ€ν€ κ°μ+1 ν΄μ€λ€.
5.νμμ λΉΌλΈ κ²½νμΉ * νμ±νμ€ν€ κ°μλ₯Ό κ²°κ³Όκ°μ λν΄μ λ€λ₯Έ ν(B)μ λ£μ΄μ€λ€.
6.μ΅λ νμ±ν μ€ν€ κ°μκ° λλ©΄ νμ λ¨μ μ€ν€μ κ²½νμΉ * μ΅λνμ±νμ€ν€κ°μ ν κ²°κ³Όκ°μ λν΄μ€λ€
7.Bμ μ μ₯λ κ²½νμΉλ€μ κ²°κ³Όκ°μ λν΄μ€λ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/*
* μ
λ ₯
κ²½νμΉκ°―μn μ΅λνμ±νk
*
* μΆλ ₯
κ²½νμΉν©μ μ΅λκ°
* */
* */
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PriorityQueue<Long>pq = new PriorityQueue();
PriorityQueue<Long>pq2 = new PriorityQueue();
String [] str = br.readLine().split(" ");
String [] str2 = br.readLine().split(" ");
long n = Long.parseLong(str[0]); //κ²½νμΉ μ
long k = Long.parseLong(str[1]); // νμ±ν κ°―μ
long result = 0L;
int cnt =0;
for (int i = 0; i < n; i++) {
pq.offer(Long.parseLong(str2[i]));
}
while (cnt<=k && !pq.isEmpty()) { //νμ±ν ν λ
Long m = pq.poll();
pq2.offer(m*cnt);
cnt++;
}
while (!pq2.isEmpty()) { //νμ±ν λμλ μ€ν€
result += pq2.poll();
}
while(!pq.isEmpty()){ //λ¨μμλ μ€ν€
result += pq.poll()*k;
}
System.out.println(result);
}
}
λ©λͺ¨λ¦¬ : 72312KB, μκ° : 608ms
πλ λ€λ₯Έ νμ΄
1. μμμ μ²λΌ μ°μ μμ νλ‘ μ κ·Όνλ λ°©λ²μ λκ°λ€.
2.νμ§λ§ μ°μ μμ ν 1κ° +while+ifλ¬Έμ μ‘°ν©μ μ΄μ©
3.whileλ¬Έμ λλ©° νμ κ°μ λ°λ‘ κ³μ°ν΄μ κ²°κ³Όκ°μ λν΄μ€λ€.
3-1 λ§μ½ νμ±νμ€ν€κ°―μκ° μ΅λνμ±ν μ€ν€κ°μκ° λμ§μμλ€λ©΄ κ²°κ³Όκ°μ κΊΌλΈ κ²½νμΉ * νμ±νμ€ν€κ°―μλ₯Ό λνκ³
νμ±νμ€ν€κ°―μ +1 ν΄μ€λ€.
3-2 λ§μ½ νμ±ν μ€ν€κ°―μμ κ°μΌλ©΄ κΊΌλΈ κ²½νμΉ * νμ±ν μ€ν€κ°―μλ§ ν΄μ€λ€.
4.νκ° λΉμ€νμ΄ λλ©΄ κ°μ μΆλ ₯νλ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/*
* μ
λ ₯
κ²½νμΉκ°―μn μ΅λνμ±νk
*
* μΆλ ₯
κ²½νμΉν©μ μ΅λκ°
* */
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PriorityQueue<Long>pq = new PriorityQueue();
String [] str = br.readLine().split(" ");
String [] str2 = br.readLine().split(" ");
long n = Long.parseLong(str[0]); //κ²½νμΉ μ
long k = Long.parseLong(str[1]); // νμ±ν κ°―μ
long result = 0L; //κ²°κ³Όκ°
for (int i = 0; i < n; i++) {
pq.offer(Long.parseLong(str2[i]));
}
pq.poll(); //μ€ν€1κ°λ₯Ό νμ±ν
int cnt =1; //νμ¬κΉμ§ νμ±νλ μ€ν€ κ°―μ
//1κ°λ₯Ό whileλ¬Έ λ°μμ νμ±ν ν μ΄μ λ 1κ°λ§ λ½μμλλ μν₯μ λ―ΈμΉλ μ€ν€μ΄ μκΈ°λλ¬Έμ΄λ€
while (!pq.isEmpty()) {
if(cnt<k){
result += pq.poll() * cnt;
cnt++;
}else {
result+=pq.poll()*k;
}
}
System.out.println(result);
}
}
λ©λͺ¨λ¦¬ : 61216KB, μκ° : 556ms
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java]BOJ 2776 : μκΈ°μ (0) | 2025.01.13 |
---|---|
[Java]BOJ 1388 : λ°λ₯μ₯μ (0) | 2024.12.07 |
[Java]BOJ 1026 : 보물 (0) | 2024.12.06 |
BOJ 1863 : μ€μΉ΄μ΄λΌμΈ μ¬μ΄κ±° (0) | 2024.12.03 |
BOJ 11557 : Yangjojang of The Year -JAVA (1) | 2024.12.03 |