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();
}
}