문제 - https://www.acmicpc.net/problem/12018

 

12018번: Yonsei TOTO

연세대학교 수강신청이 얼마 전부터 바뀌어, 마일리지 제도로 바뀌었다. 이 제도는 각각의 학생들에게 마일리지를 주어 듣고 싶은 과목에 마일리지를 과목당 1~36을 분배한다. 그리고 모두 분배

www.acmicpc.net

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

public class Main {

    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    static StringBuilder sb = new StringBuilder();
    static StringTokenizer st;

    static int N, M;
    static PriorityQueue<Integer> pq = new PriorityQueue();

    public static void main(String[] args) throws Exception {

        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            int P = Integer.parseInt(st.nextToken());
            int L = Integer.parseInt(st.nextToken());
            if (P<L) {
                pq.add(1);
                br.readLine();
            }
            else{
                Integer[] points = new Integer[P];
                st = new StringTokenizer(br.readLine());
                for (int j = 0; j < P; j++) {
                    points[j] = Integer.parseInt(st.nextToken());
                }
                Arrays.sort(points, Collections.reverseOrder());
                pq.add(points[L-1]);
            }
        }
        for (int i = 0; i < N; i++) {
            M -= pq.poll();
            if (M<0){
                sb.append(i);
                break;
            }
        }
        
        bw.write(sb.length()>0 ? sb.toString() : String.valueOf(N)+"\n");
        bw.flush();
        bw.close();
        br.close();
    }
}

기본적인 그리디 문제였다. 굳이 우선순위큐를 안써도 되지만 더 빠를까 싶어서 써봤다.

근데 안쓰는게 더 빠를지도??

'공부 > algorithm' 카테고리의 다른 글

BOJ 우주 탐사선(17182) - Java  (0) 2021.10.11
BOJ KCM Travel(10217) - Java  (0) 2021.10.10
BOJ A와 B(12904) - Java  (0) 2021.10.04
BOJ 소수 경로(1963) - Java  (0) 2021.09.29
BOJ 단어 수학(1339) - Java  (0) 2021.09.28

+ Recent posts