순간을 성실히, 화려함보단 꾸준함을

[ boj : 22252 ] 정보 상인 호석 본문

알고리즘,SQL/백준,BOJ

[ boj : 22252 ] 정보 상인 호석

폭발토끼 2021. 11. 27. 17:35

https://www.acmicpc.net/problem/22252

 

22252번: 정보 상인 호석

암흑가의 권력은 주먹과 정보에서 나온다. 주먹은 한 명에게 강하고, 정보는 세계를 가지고 놀 수 있기 때문에 호석이는 세상 모든 정보를 모으는 "정보 상인"이 되고 싶다. 정보 상인은 정보를

www.acmicpc.net

해설 : 그냥 적당한 구현문제입니다. 

처음에 알고리즘 시작할때 하나의 key 값에 여러개의 정보를 저장할때 어떻게 해야될지 몰라서 해맸던 기억이 있습니다.

 

방법은 map을 하나 선언해주고 value 값으로 vector,set,priority_queue  등등 을 선언해 주면됩니다.

 

전 여기서 가장 큰 값을 순차적으로 뽑는것이니 priority_queue 를 선언해서 문제를 해결하였습니다.

 

하 자바 너무 싫어요 ㅠㅠㅠㅠ

 

/**
 * IO Template reference : 류호석
 */

import java.io.*;
import java.util.*;

import static java.lang.Math.*;

public class Main {
    static FastReader scan = new FastReader();


    public static void main(String[] args) {
        int t=1;
        //t = scan.nextInt();
        while(t-->0)
            solve();
    }
    static void solve() {
        int q;
        q = scan.nextInt();
        Map<String, PriorityQueue> mp = new HashMap<>();

        long ans=0;
        int f,k,c;
        String name;
        for(int i=0;i<q;i++){
            f = scan.nextInt();
            name = scan.next();
            if(f==1){
                k = scan.nextInt();
                PriorityQueue<Integer> pq;
                if(!mp.containsKey(name)){
                    pq = new PriorityQueue<>((x,y)->y-x);
                }else{
                    pq = mp.get(name);
                }

                for(int j=0;j<k;j++){
                  c = scan.nextInt();
                  pq.add(c);
                  mp.put(name,pq);
                }
            }
            else{
                k=scan.nextInt();
                if(!mp.containsKey(name)) continue;
                for(int j=0;j<k && !mp.get(name).isEmpty();j++) {
                    ans += (Integer)mp.get(name).peek();
                    mp.get(name).poll();
                }
            }
        }
        System.out.println(ans);
    }

    static class FastReader{
        BufferedReader br;
        StringTokenizer st;

        public FastReader(){
            br = new BufferedReader(new InputStreamReader(System.in));
        }
        public FastReader(String s) throws FileNotFoundException {
            br = new BufferedReader(new FileReader(new File(s)));
        }
        String next(){
            while(st==null || !st.hasMoreElements()){
                try{
                    st = new StringTokenizer(br.readLine());
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }
        int nextInt(){
            return Integer.parseInt(next());
        }
        double nextDouble(){
            return Double.parseDouble(next());
        }
        long nextLong(){
            return Long.parseLong(next());
        }
        String nextLind(){
            String str="";
            try{
                str=br.readLine();
            }catch (IOException e){
                e.printStackTrace();
            }
            return str;
        }
    }
}

'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글

[ boj : 23559 ] 밥  (2) 2021.12.10
[ boj : 22254 ] 공정 컨설턴트 호석  (0) 2021.12.01
[ boj : 22251 ] 빌런 호석  (0) 2021.11.23
[ boj : 14746 ] Closet Pair  (0) 2021.11.21
[ boj : 16947 ] 서울 지하철 2호선  (0) 2021.11.20