PLOD

[백준] 브실이의 입시전략(29723) 본문

대외 활동 및 IT 지식/알고리즘 문제 풀이 정리

[백준] 브실이의 입시전략(29723)

훌룽이 2026. 4. 10. 21:16

🔗 문제 링크

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

✅ 코드

package test.silver;

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

public class 백준_29723 {
    static int n,m,k;
    static Map<String,Integer> map;
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();

        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());
        k = Integer.parseInt(st.nextToken());

        map = new HashMap<>();
        for(int i = 0 ; i < n ; i++){
            st = new StringTokenizer(br.readLine());
            String subject = st.nextToken();
            int grade = Integer.parseInt(st.nextToken());
            map.put(subject, grade);
        }

        int sumVal = 0;

        for(int i = 0 ; i < k ; i++){
            st = new StringTokenizer(br.readLine());
            String subject = st.nextToken();
            sumVal += map.get(subject);
            map.remove(subject);
        }

        List<Integer> list = new ArrayList<>(map.values());

        Collections.sort(list);
        int minVal = sumVal;
        for(int i = 0; i < m - k ; i++){
            minVal += list.get(i);
        }

        Collections.sort(list,Collections.reverseOrder());
        int maxVal = sumVal;

        for(int i = 0 ; i < m - k ; i++){
            maxVal += list.get(i);
        }

        sb.append(String.valueOf(minVal)).append(" ").append(String.valueOf(maxVal));

        System.out.println(sb);

        br.close();
    }
}

💡 배운 점 & 느낀 점

1. Map 자료구조에서 Value를 List 자료구조로 변환

List<Integer> list = new ArrayList<>(map.Values());
Comments