[λ°±μ€ / BOJ 2109] μνκ°μ°
https://www.acmicpc.net/problem/2109
2109λ²: μνκ°μ°
ν μ λͺ ν νμμκ² n(0 ≤ n ≤ 10,000)κ°μ λνμμ κ°μ° μμ²μ ν΄ μλ€. κ° λνμμλ d(1 ≤ d ≤ 10,000)μΌ μμ μμ κ°μ°μ ν΄ μ£Όλ©΄ p(1 ≤ p ≤ 10,000)λ§νΌμ κ°μ°λ£λ₯Ό μ§λΆνκ² λ€κ³ μλ €μλ€.
www.acmicpc.net
λ¬Έμ
ν μ λͺ ν νμμκ² n(0 ≤ n ≤ 10,000)κ°μ λνμμ κ°μ° μμ²μ ν΄ μλ€. κ° λνμμλ d(1 ≤ d ≤ 10,000)μΌ μμ μμ κ°μ°μ ν΄ μ£Όλ©΄ p(1 ≤ p ≤ 10,000)λ§νΌμ κ°μ°λ£λ₯Ό μ§λΆνκ² λ€κ³ μλ €μλ€. κ° λνμμ μ μνλ dμ pκ°μ μλ‘ λ€λ₯Ό μλ μλ€. μ΄ νμλ μ΄λ₯Ό λ°νμΌλ‘, κ°μ₯ λ§μ λμ λ² μ μλλ‘ μνκ°μ°μ νλ € νλ€. κ°μ°μ νΉμ±μ, μ΄ νμλ ν루μ μ΅λ ν κ³³μμλ§ κ°μ°μ ν μ μλ€.
μλ₯Ό λ€μ΄ λ€ λνμμ μ μν pκ°μ΄ κ°κ° 50, 10, 20, 30μ΄κ³ , dκ°μ΄ μ°¨λ‘λ‘ 2, 1, 2, 1 μ΄λΌκ³ νμ. μ΄λ΄ λμλ 첫째 λ μ 4λ² λνμμ κ°μ°μ νκ³ , λμ§Έ λ μ 1λ² λνμμ κ°μ°μ νλ©΄ 80λ§νΌμ λμ λ² μ μλ€.
μ λ ₯
첫째 μ€μ μ μ nμ΄ μ£Όμ΄μ§λ€. λ€μ nκ°μ μ€μλ κ° λνμμ μ μν pκ°κ³Ό dκ°μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
첫째 μ€μ μ΅λλ‘ λ² μ μλ λμ μΆλ ₯νλ€.
νμ΄
μ λ ¬κ³Ό λΈλ£¨νΈν¬μ€ λ¬Έμ !
payμ dayλ₯Ό μ μ₯ν lecture classλ₯Ό λ§λ€μλ€. μ΄ lectureμ κΈμ‘μ΄ ν° μμλ‘, κ°μΌλ©΄ λ μ§κ° μμ μμλ‘ μ λ ¬λλλ‘ νλ€.
boolean λ°°μ΄λ‘ lectureμ λ μ§μμ κ°μ°μ΄ κ°λ₯νμ§ νμΈνλ€.
βΌοΈ μ²μμλ λ¬Έμ λ₯Ό μλͺ» μ΄ν΄ν΄μ.... dμ μλ―Έκ° κ·Έ λ μ§μ κ°μ°μ΄ κ°λ₯νκ°? λΌλ κ²μΈμ§ μμλ°μ..
κ·Έκ² μλλΌ dμΌ μμ κ°μ°μ΄ κ°λ₯νκ°!! μ΄κ²μ΄ μ€μν POINT
μ½λ
μ²μμ λ¬Έμ λ₯Ό μλͺ»μ΄ν΄ν΄μ νλ¦° μ½λ....π
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer;
int n = Integer.parseInt(br.readLine());
Map<Integer, Integer> univ = new HashMap<>();
while(n-- > 0){
stringTokenizer = new StringTokenizer(br.readLine());
int p = Integer.parseInt(stringTokenizer.nextToken());
int d = Integer.parseInt(stringTokenizer.nextToken());
if(univ.containsKey(d)){
int p1 = univ.get(d);
if(p1 < p)
univ.put(d, p);
else
continue;
}
else
univ.put(d, p);
}
long answer = 0;
Set<Integer> kSet = univ.keySet();
for(int k : kSet){
answer += univ.get(k);
}
System.out.println(answer);
}
}
μ¬λ¬λ²μ μλλμ λ§μ μ½λ;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
public class Main_BOJ_2109_μνκ°μ°{
static class lecture implements Comparable<lecture>{
int pay;
int day;
lecture(int pay, int day){
this.pay = pay;
this.day = day;
}
@Override
public int compareTo(lecture o) {
// TODO Auto-generated method stub
int result = o.pay - this.pay;
if(result == 0)
result = this.day - o.day;
return result;
}
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer;
int n = Integer.parseInt(br.readLine());
boolean[] days = new boolean[10001];
List<lecture> list = new ArrayList<>();
while(n-- > 0){
stringTokenizer = new StringTokenizer(br.readLine());
int p = Integer.parseInt(stringTokenizer.nextToken());
int d = Integer.parseInt(stringTokenizer.nextToken());
list.add(new lecture(p, d));
}
Collections.sort(list);
int answer = 0;
for(lecture l : list){
// lectureλ₯Ό κΈμ‘ λ΄λ¦Όμ°¨μ || λ μ§ μ€λ¦μ°¨μμΌλ‘ νκΈ°λλ¬Έμ, μμμΌλ‘ νμ§μμΌλ©΄ λμ€μ λμ€λ dayκ° μμ κ°μ°μ λ€μ΄κ° μ μμ
for(int j = l.day ; j > 0 ; j--){
if(!days[j]){
days[j] = true;
answer += l.pay;
break;
}
}
}
System.out.println(answer);
}
}