๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/22252)
< ์ ๋ณด ์์ธ ํธ์ >
๋ฌธ์ ํ์ด
HashMap๊ณผ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
์ด๋ HashMap์ <์ด๋ฆ, ์ฐ์ ์์ ํ> ํํ๋ก ์ด๊ธฐํํ๋ฉฐ, ์ฐ์ ์์ ํ๋ ๋ด๋ฆผ์ฐจ์ ์์ผ๋ก ์ฐ์ ์์๋ฅผ ๋๋ค.
1๋ก ์์ํ ๋๋ key๊ฐ์ผ๋ก ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋์ง ์๋์ง ํ๋จํ์ฌ ์ ๋ณด๋ฅผ ์ ์ฅํด ์ฃผ๊ณ ,
2๋ก ์์ํ ๋๋ ์ ๋ณด์ ๊ฐ์์ ๋ฐ๋ผ ์ฐ์ ์์ ํ์์ ๋ฝ์ ๋ํด์ค๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class _22252_ { // ์ ๋ณด ์์ธ ํธ์
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int q = Integer.parseInt(bf.readLine());
HashMap<String, PriorityQueue<Integer>> map = new HashMap<>();
long result=0;
for (int i = 0; i < q; i++) {
st=new StringTokenizer(bf.readLine());
int cmd=Integer.parseInt(st.nextToken());
String name=st.nextToken();
int num=Integer.parseInt(st.nextToken());
if(cmd==1) {
if(!map.containsKey(name)) {
PriorityQueue<Integer>queue=new PriorityQueue<>(Collections.reverseOrder());
for(int j=0; j<num; j++) {
queue.add(Integer.parseInt(st.nextToken()));
}
map.put(name, queue);
}else {
for(int j=0; j<num; j++) {
map.get(name).add(Integer.parseInt(st.nextToken()));
}
}
}else {
if(map.containsKey(name)) {
PriorityQueue<Integer>temp=map.get(name);
int l= num>temp.size() ? temp.size() : num;
for(int j=0; j<l; j++) {
result+=temp.poll();
}
}
}
}
System.out.println(result);
}
}
Main
๋ณ์)
q : ์ฟผ๋ฆฌ์ ๊ฐ์
map : <๊ณ ๋ฆด๋ผ ์ด๋ฆ, ์ฐ์ ์์ ํ <์ ๋ณด>>
result : ์ ๋ณด ๊ฐ์น ์ดํฉ
cmd : 1 or 2
name : ๊ณ ๋ฆด๋ผ ์ด๋ฆ
num : ์ ๋ณด์ ๊ฐ์
queue : ์ฐ์ ์์ ํ / ๋ด๋ฆผ์ฐจ์
-์ฟผ๋ฆฌ์ ๊ฐ์(q) ์ ๋ ฅ
- ์ฟผ๋ฆฌ์ ๊ฐ์๋งํผ ์ฟผ๋ฆฌ ์ ๋ ฅ
: 1๋ก ์์ํ๋ค๋ฉด map์ key ๊ฐ์ผ๋ก ๊ณ ๋ฆด๋ผ์ ์ด๋ฆ์ด ์๋์ง ์๋์ง ํ์ธ ํ ์์ผ๋ฉด ์ถ๊ฐ, ์์ผ๋ฉด PriorityQueue ๋ง๋ค์ด์ ์ถ๊ฐ
: 2๋ก ์์ํ๋ค๋ฉด ๊ตฌ๋งคํ๋ ค๋ ์ ๋ณด์ ๊ฐ์๊ฐ queue์ size๋ณด๋ค ํฐ์ง ํ์ธ ํ ๋ ์ค์ ์์ ๊ฐ ๊ฐ์๋งํผ ๋ฝ์์ result์ ๋ํด์ค
- ์ ๋ณด ๊ฐ์น ์ดํฉ(result) ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 21773_๊ฐํฌ์ ํ๋ก์ธ์ค 1 (0) | 2023.07.24 |
---|---|
[Baekjoon] 21939_๋ฌธ์ ์ถ์ฒ ์์คํ Version 1 (0) | 2023.07.24 |
[Baekjoon] 19640_ํ์ฅ์ค์ ๊ท์น (0) | 2023.07.20 |
[Baekjoon] 17612_์ผํ๋ชฐ (0) | 2023.07.20 |
[Baekjoon] 2696_์ค์๊ฐ ๊ตฌํ๊ธฐ (0) | 2023.07.19 |