문제링크

 

풀이

T = int(input())
grade = ["A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"]
for test in range(1, T+1):
    # n : 학생 수, k : 알고 싶은 학생의 번호
    n, k = map(int, input().split())
    # score[] : 학생들의 total 점수를 보관할 리스트
    score = []
    for i in range(n):
        # 중간, 기말, 과제 점수
        mid, fin, work = map(int, input().split())
        total = mid*0.35 + fin*0.45 + work*0.2
        score.append(total)

    # k의 총 점수
    k_score = score[k-1]
    score.sort(reverse=True) # 학점 부여를 위해 내림차순 정렬
    
    rate = n//10
    k_index = score.index(k_score) // rate

    print(f"#{test} {grade[k_index]}")

평점 비율을 이해하는데 시간이 많이 걸렸다.

N명의 학생이 있을 때 N/10명의 학생에게 동일한 평점을 부여한다. 만약 학생수가 30명이면 3명씩 공동 학점이기 때문에 k가 2등이라면 2//3을 했을 때 0이 나오기 때문에 학점 리스트의 0번째 인덱스 학점인 A+를 부여받는다.