카테고리 없음
[SWEA] 1983번 : 조교의 성적 매기기
코딍코딍
2023. 10. 23. 17:19
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
소스코드
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
class Solution {
static class Node {
int num;
double score;
public Node(int num, double score) {
this.num = num;
this.score = score;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
String grade[] = {"A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"};
for (int i = 0; i < t; i++) {
st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
Node arr[] = new Node[n];
for (int j = 0; j < n; j++) {
st = new StringTokenizer(br.readLine());
// 35% 45% 20%
double score = 0;
score += Integer.parseInt(st.nextToken()) * (0.35);
score += Integer.parseInt(st.nextToken()) * (0.45);
score += Integer.parseInt(st.nextToken()) * (0.2);
arr[j] = new Node(j + 1, score);
}
// 점수 기준 내림차순 정렬
Arrays.sort(arr, new Comparator<Node>() {
@Override
public int compare(Node o1, Node o2) {
return Double.compare(o2.score, o1.score);
}
});
String result = "";
for (int j = 0; j < n; j++) {
// k번째 학생
if(arr[j].num == k) {
result = grade[j / (n / 10)];
break;
}
}
sb.append("#" + (i + 1) + " " + result + "\n");
}
System.out.println(sb);
}
}
해결 방법
- 학생 번호와 점수를 가지는 Node 클래스 생성
- 입력값 Node 배열에 저장한 뒤 점수 기준 내림차순 정렬
- K번째 학생을 찾아 학점 매기기