1 분 소요

1983. 조교의 성적 매기기

문제

학점 계산을 해야합니다. 학점은 상대평가로 주어집니다.

평점은 총 10개

A+ A0 A- B+ B0 B- C+ C0 C- D0

총점은 중간고사(35%) + 기말고사(45%) + 과제(20%)

각각의 평점은 같은 비율로 부여할 수 있습니다. Ex) 학생 수가 N명이라면, N/10명의 학생들에게 동일한 평점을 부여할 수 있습니다.

학점을 알고싶은 K번째 학생의 번호이고, K 번째 학생의 학점을 출력합니다.


제약사항

  1. N은 항상 10의 배수이며, 10이상 100이하의 정수
  2. K는 1이상 N이하의 정수
  3. K번째 학생의 총점과 다른 학생의 총점이 동일한 경우는 주어지지 않음

생각해보기

우선 실행할 테스트 케이스 수를 입력하고 학생 수랑 검색하고 싶은 학생 번호를 입력합니다. 그리고 중간고사, 기말고사, 과제 3가지 값을 10개 받고 성적을 매긴다음에 검색하고 싶은 학생 번호의 값을 찾아서 준다.

해결 방법

T = int(input())
for i in range(1, T+1):
    N, K = map(int, input().split())
    space = []
    score = []
    for j in range(N):
        space.append(list(map(int,input().split())))
        
        score.append(space[j][0]*0.35 + space[j][1]*0.45 + space[j][2] * 0.2)   
    NK = score[K-1]
    score.sort(reverse=True)
    KI = score.index(NK)
    G = N//10
    NewG = []
    for o in ["A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"]:
        NewG += [o]*G
    print(f'#{i} {NewG[KI]}')
T = int(input())
grades = ['A+', 'A0', 'A-', 'B+', 'B0', 'B-', 'C+', 'C0', 'C-', 'D0']
for tc in range(1, T+1):
    N, K = map(int, input().split())
    total_list = []
    for _ in range(N): # n번 돌아
        mid, final, hws = map(int, input().split())
        total = (mid * 0.35) + (final * 0.45) + (hws*0.2)
        total_list.append(total)
        # [74.6, 92.55000000000001, 88.8, 99.45, 72.35, 85.85000000000001, 96.25, 68.95, 85.5, 85.75]

    # k번 학생의 점수
    # 먼저 k번째 학생의 인덱스를 구해주고
    k_score = total_list[K-1]
    
    # 정렬
    total_list.sort(reverse=True)
    # [99.45, 96.25, 92.55000000000001, 88.8, 85.85000000000001, 85.75, 85.5, 74.6, 72.35, 68.95]
    div = N//10
    final_k_score = total_list.index(k_score) // div

    print('#{} {}'.format(tc, grades[final_k_score]))

카테고리:

업데이트:

댓글남기기