문제
학기가 끝나고, 학생들의 점수로 학점을 계산중이다.
학점은 상대평가로 주어지는데, 총 10개의 평점이 있다.
학점은 학생들이 응시한 중간/기말고사 점수 결과 및 과제 점수가 반영한다.
각각 아래 비율로 반영된다.
10 개의 평점을 총점이 높은 순서대로 부여하는데, 각각의 평점은 같은 비율로 부여할 수 있다.
예를 들어, N 명의 학생이 있을 경우 N/10 명의 학생들에게 동일한 평점을 부여할 수 있다.
입력으로 각각의 학생들의 중간, 기말, 과제 점수가 주어지고, 학점을 알고싶은 K 번째 학생의 번호가 주어졌을 때,
K 번째 학생의 학점을 출력하는 프로그램을 작성하라.
입력
입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.
다음 줄부터 각 테스트 케이스가 주어진다.
테스트 케이스의 첫 번째 줄은 학생수 N 과, 학점을 알고싶은 학생의 번호 K 가 주어진다.
테스트 케이스 두 번째 줄 부터 각각의 학생이 받은 시험 및 과제 점수가 주어진다.
2 10 2 87 59 88 99 94 78 94 86 86 99 100 99 69 76 70 76 89 96 98 95 96 74 69 60 98 84 67 85 84 91 20 12 76 58 78 96 100 99 97 99 98 96 100 98 98 97 100 57 67 77 75 99 63 84 81 79 99 99 98 85 74 88 87 98 85 85 80 73 92 79 75 79 93 93 94 83 94 99 99 99 55 94 71 90 89 77 98 100 98 98 99 98 |
출력
테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
#1 A- #2 C- |
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.util.*; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); //테스트 케이스 수 for(int i=0; i<t; i++){ int n = sc.nextInt(); //학생 수 int k = sc.nextInt()-1; //알고 싶은 학생 번호 double[] student = new double[n]; //학생 번호에 맞춰 학점 저장 double[] rank = new double[n]; //학생 순위 저장 String[] score = {"A+","A0","A-","B+","B0","B-","C+","C0","C-","D0"}; //평점 //값을 받아와서 평점 계산 for(int j=0; j<n; j++){ int midTerm = sc.nextInt(); int finalTerm = sc.nextInt(); int task = sc.nextInt(); student[j] = midTerm*0.35 + finalTerm*0.45 + task*0.2; } rank = student.clone(); //배열 복사 Arrays.sort(rank); //정렬 //성적 매기기 for(int j=0; j<n; j++){ if(student[k] == rank[j]){ int output = (int) Math.floor((double)(n-j-1)/n*10); System.out.printf("#%d %s\n",i+1,score[output]); break; } } } } } | cs |
더보기
반올림 함수 (round)
Math.round();
올림 함수 (ceil)
Math.ceil();
내림 함수 (floor)
Math.floor();
'SW expert Academy > D2' 카테고리의 다른 글
[SW Expert Academy] 1976번 시각 덧셈 (0) | 2023.05.11 |
---|---|
[SW Expert Academy] 1979번 어디에 단어가 들어갈 수 있을까 (0) | 2023.05.11 |
[SW Expert Academy] 1984번 중간 평균값 구하기 (0) | 2023.04.21 |
[SW Expert Academy] 1986번 지그재그 숫자 (0) | 2023.04.20 |
[SW Expert Academy] 1989번 초심자의 회문 검사 (0) | 2023.04.20 |