[백준] PS/Java [실랜디]

[백준 2865] 나는 위대한 슈퍼스타K - JAVA

SH3542 2025. 5. 4. 05:38

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

 

각 참가자의 최대 점수를 맵핑하고 정렬

높은 점수부터 k개를 뽑아서 더하고 소수점 첫째자리까지 반올림해서 출력

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

class Main {

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

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int a = Integer.parseInt(st.nextToken());
    int b = Integer.parseInt(st.nextToken());
    int c = Integer.parseInt(st.nextToken());

    double[] l = new double[101];

    for (int i = 0; i < b; i++) {
      st = new StringTokenizer(br.readLine());
      for (int j = 0; j < a; j++) {
        int p = Integer.parseInt(st.nextToken());
        double sc = Double.parseDouble(st.nextToken());

        l[p] = Math.max(l[p], sc);
      }
    }

    Arrays.sort(l);

    double ans = 0;
    int idx = 100;
    while (c-- > 0) {
      ans += l[idx--];
    }

    System.out.println(Math.round(ans * 10) / 10d);
  }
}