[swea] 1983. 조교의 성적 매기기

yeongbin·2022년 5월 5일
0

swea

목록 보기
1/6

문제 바로가기

난이도 : 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의 인덱스로 넣어 답을 출력하였다.

profile
꾸준함의 가치를 알자

0개의 댓글