import java.io.*;
import java.util.*;
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
String[] grade = {"A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"};
for (int t = 1; t <= T; t++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
Map<Integer, Integer> map = new HashMap<>();
for (int i = 1; i <= N; i++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st2.nextToken());
int b = Integer.parseInt(st2.nextToken());
int c = Integer.parseInt(st2.nextToken());
map.put(i, (a+b+c) / 3);
}
List<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
System.out.println(list);
int idx = 0; int cnt = 1;
int x = N/10; int answer = 0;
for (Map.Entry<Integer, Integer> entry : list) {
answer = entry.getKey();
if (entry.getKey() == K) {
System.out.println("#" + t + " " + grade[idx]);
}
System.out.println("grade : " + grade[idx]);
if (cnt == x) {
cnt = 1;
idx++;
}
cnt++;
}
}
}
}
import java.io.*;
import java.util.*;
public class SW1983 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
String[] grade = {"A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"};
for (int t = 1; t <= T; t++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
Double[] score = new Double[N];
double find_score = 0.0;
for (int i = 0; i < N; i++) {
StringTokenizer st2 = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st2.nextToken());
int b = Integer.parseInt(st2.nextToken());
int c = Integer.parseInt(st2.nextToken());
score[i] = a*0.35 + b*0.45 + c*0.20;
if (i+1 == K) {
find_score = score[i];
}
}
Arrays.sort(score, Collections.reverseOrder());
int idx = 0;
for (int i = 0; i < score.length; i++) {
if (score[i] == find_score) {
idx = i;
break;
}
}
idx = idx / (N/10);
System.out.println("#" + t + " " + grade[idx]);
}
}
}
난 Map함수를 생각해서 풀었다.
그냥 점수를 변수에 저장해 놓고 배열의 돌며 일치하는 경우를 찾는 쉬운 방법이 있다는 것을 알게되었고 너무 복잡하게 접근했다고 느꼈다.
풀이
1. 전체 등급을 배열에 담기
2. 평균을 담을 배열을 생성하고 반복문을 돌며 저장
3. K번째 학생의 점수는 변수에 저장
4. 내림차순 정렬
5. K번째 학생의 점수를 찾아 학점 출력