SWEA(SWExpertacAdemy)

[SWEA] 4466. 최대 성적표 만들기 D3 (자바)

심층코드 2025. 5. 16. 18:36

4466. 최대 성적표 만들기 D3


당신은 N개의 과목에 대한 시험을 쳤다. 각 과목의 점수는 정수이고 만점은 100점이다.

성적표에는 이 중에서 정확히 K개의 과목을 선택하여 넣을 수 있다. 당신은 기왕이면 성적표에 나타나는 총점이 가장 크도록 성적표를 만들고 싶다.

최대로 만들 수 있는 총점은 몇점인지 구하여라.


 [입력]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 N,K(1≤K≤N≤100)이 공백 하나로 구분되어 주어진다.

두 번째 줄에는 N개의 정수가 공백 하나로 구분되어 주어진다. 각 정수는 0 이상 100이하이다.

[출력]

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 성적표에 표시될 총점의 최댓값을 출력한다.
 

입력
2
3 1
100 90 80
3 2
100 90 80
// Test Case 수
// Test Case 1, N = 3, K = 1
// N개 과목에 대한 점수
// Test Case 2, N = 3, K = 2
 
출력
#1 100
#2 190
// Test Case 1의 정답
 

[코드]

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

public class Solution {

	public static void main(String[] args) throws IOException {
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		int T=Integer.parseInt(br.readLine());
		for (int i = 1; i <= T; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int N=Integer.parseInt(st.nextToken());
			int K=Integer.parseInt(st.nextToken());
			StringTokenizer st2 = new StringTokenizer(br.readLine());
			List<Integer> arr = new ArrayList<>();
			for (int i2 = 0; i2 < N; i2++) {
				int A=Integer.parseInt(st2.nextToken());
				arr.add(A);
			}
			Collections.sort(arr, Collections.reverseOrder());;
			System.out.print("#"+i+" ");
			int total=0;
			for (int i3 = 0; i3 < K; i3++) {
				total+=arr.get(i3);
			}
			System.out.println(total);
		}
		br.close();
	}

}