성적 산출

시간 제한1초메모리 제한128 MB

요약
시험이 3개 이상이면 최저 점수를 제외한 학생 평균을 구하고, 반 평균과 표준편차로 학점 경계를 정한 뒤 보너스 점수와 결석으로 학점을 조정해 반 평균 평점을 계산해 출력한다.
난이도

보통10점 중 4점

유형
구현, 수학, 시뮬레이션, 정렬
정답자
아직 제출이 없습니다

문제

Chips 선생님은 자동으로 계산할 수 있는 간단한 성적 산출 방식을 사용한다. 학생들의 시험 점수, 보너스 점수, 출결 기록을 읽어 각 학생의 성적을 계산하고, 그 반의 평균 평점(grade point)을 출력하는 프로그램을 작성하라.

채점 방식은 다음과 같다. 모든 시험은 100점 만점이며, 각 시험 점수는 0 이상 100 이하의 정수이다. 시험을 2번보다 많이 치렀다면, 각 학생의 평균을 계산하기 전에 그 학생의 가장 낮은 시험 점수 하나를 버린다. 학생별 평균을 구한 뒤에는 반 전체의 평균(mean)과 표준편차(sd)를 계산한다.

등급 구분선은 반의 평균과 표준편차를 기준으로 정해진다.

  • 평균이 (평균 ++ 1 표준편차) 이상이면 A,
  • 평균이 (평균) 이상이고 (평균 ++ 1 표준편차) 미만이면 B,
  • 평균이 (평균 −- 1 표준편차) 이상이고 (평균) 미만이면 C,
  • 평균이 (평균 −- 1 표준편차) 미만이면 D이다.

학생이 모은 보너스 점수 2점마다 Chips 선생님은 그 학생의 계산된 평균을 3퍼센트포인트 올린다. 따라서 보너스가 1점인 학생은 전혀 오르지 않고, 4점이나 5점인 학생은 6퍼센트포인트 오르는 식이다(상승폭은 ⌊bonus/2⌋×3\lfloor bonus / 2 \rfloor \times 3). 보너스에 의한 상승은 등급 구분선이 정해진 뒤에 평균에 적용된다.

마지막으로 출결에 따라 등급을 조정한다. 결석 4회마다 등급이 한 단계 내려가고(A→B, B→C, C→D, D→F), 예를 들어 9회 결석하면 두 단계 내려간다. 학생은 F보다 아래로 내려갈 수 없다. 개근(결석 0회)한 학생은 등급이 한 단계 올라가지만 A보다 위로는 올라갈 수 없다.

Chips 선생님은 모든 계산 과정에서 결과를 항상 소수 첫째 자리로 반올림한다.

정리하면, 각 반에 대해 Chips 선생님은 시험을 2번보다 많이 치렀다면 각 학생의 가장 낮은 시험 점수를 버리고, 각 학생의 평균을 구하고, 반의 평균과 표준편차를 구하고, 보너스 상승을 평균에 적용하고, 구분선으로부터 각 학생의 등급을 정한 뒤, 마지막으로 출결에 따라 등급을 조정한다.

반의 평균 평점은 A마다 4점, B마다 3점, C마다 2점, D마다 1점, F마다 0점을 부여한다. 반의 점수를 모두 더한 뒤 학생 수(항상 2명 이상)로 나눈다.

수 x1,…,xnx_1, \dots, x_n의 표준편차 sd는 다음과 같다.

sd=1n∑i=1n(xi−xˉ)2sd = \sqrt{\frac{1}{n}\sum_{i=1}^{n}\left(x_i - \bar{x}\right)^2}

여기서 xˉ\bar{x}는 목록의 평균이다. 계산된 표준편차가 1보다 작으면 Chips 선생님은 등급 계산에 1을 대신 사용한다.

예시: Chips 선생님에게 학생이 5명 있고 시험을 3번 치렀다고 하자. 아래 표는 각 학생의 시험 점수, 보너스 점수, 결석 횟수와 함께 계산된 평균(가장 낮은 시험 제외), 보정된 평균(보너스 반영), 보정 전 등급, 보정된 등급(출결 반영)을 보여준다. 구분선에 사용된 평균과 표준편차는 각각 69.0과 20.1이므로, 예를 들어 보정 전 B를 받으려면 평균이 69.0 이상이고 89.1 미만이어야 한다.

T1T2T3BnsAbstAvgAdjAvgGradeAdjGrd
1001008032100.0103.0AA
8080800580.080.0BC
6020705365.071.0BB
4040405040.046.0DC
10020201960.060.0CF

이 반의 평균 평점은 2.2이다.

입력

첫 번째 줄에는 반의 수를 나타내는 정수 NN (1≤N≤101 \le N \le 10)이 주어진다.

각 반은 다음과 같이 주어진다. 첫 줄에는 두 정수 SS와 TT가 주어지며, SS는 학생 수(1<S<311 < S < 31), TT는 치른 시험 수(1<T<111 < T < 11)이다. 이어지는 SS개의 줄은 각각 한 학생을 나타낸다. 각 줄에는 먼저 그 학생의 TT개 시험 점수(0 이상 100 이하의 정수)가, 그다음 보너스 점수가, 마지막으로 결석 횟수가 주어진다.

출력

각 반마다 한 줄씩, 그 반의 평균 평점을 소수 첫째 자리로 반올림하여 출력한다.

예제3

  1. 예제 1

    입력
    3
    3 2
    100 50 2 5
    60 60 17 1
    20 10 0 0
    5 5
    100  80  90  80  90   0   0
    80 80 80 80 80   0 0
    50 50 50 50 50 0 0
    100 100 20 20 20 0 0
    30 30 30 30 30 0 0
    10  4
    79   56   59   89    4    5
    100   89   96   79    6    2
    80   80   80   76    1    3
    76   76   76   76    5    4
    58   78   67   75    4    0
    100   96  100   95    1    2
    47   49   46   45    0    5
    67   98   59   87    5    5
    23   45   52   54    2    7
    78   75   79   79    3    3
    
    예상 출력
    3.0
    3.2
    2.4
    
  2. 예제 2

    입력
    1
    2 2
    100 100 0 0
    0 0 0 0
    
    예상 출력
    3.5
    
  3. 예제 3

    입력
    1
    3 3
    0 100 100 4 0
    100 100 100 0 8
    50 50 50 3 4
    
    예상 출력
    1.7