난이도 : D2
t = int(input())
for i in range(t):
N, K = map(int, input().split())
scores = []
total = []
grade = ['A+' , 'A0' , 'A-' , 'B+' , 'B0' , 'B-' , 'C+' , 'C0' , 'C-', 'D0']
for n in range(N):
scores.append(list(map(int, input().split())))
for i in range(N):
t = 0
for j in range(3):
if j == 0:
t += scores[i][j] * (35 / 100)
elif j == 1:
t += scores[i][j] * (45 / 100)
else:
t += scores[i][j] * (20 / 100)
total.append(t)
target_total = total[K-1]
total.sort(reverse=True)
a = N // 10
print(grade[total.index(target_total) // a])
테스트 케이스를 입력받고 학생의 수(N) 성적을 알고싶은 학생의 인덱스(K)를 입력받는다. 이때 10 <= N <= 100 이고 N은 10의 배수이다.
그리고 N명의 학생의 중간성적 기말성적 과제성적 총 3개의 성적을 입력받는다.
이때 중간(35%) 기말(45%) 과제(20%)의 비율로 점수를 매긴다.
나는 우선 scores 배열을 선언하고 학생의 성적을 입력받았다. 그리고 각 성적이 반영되는 비율을 계산하여 총점을 저장하였다.
그리고 우리가 알고 싶은 학생의 총점의 값을 저장한 후 총점 순대로 내림차순 정렬을 하였다.
성적을 매기는 기준은 비율이므로 index함수를 이용해 성적을 알기 원하는 학생이 위치한 인덱스를 구하여 N 을 10으로 나눈 값을 나눠주었다. 그 값을 성적을 저장한 grade의 인덱스로 넣어 답을 출력하였다.