반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [SW expert Academy] SWEA 1983번 조교의 성적 매기기 자바(Java)

1) 난이도 : D2

 

2) 문제번호 : 1983번

 

3) 문제 출처

swexpertacademy.com/main/code/problem/problemSolver.do?contestProbId=AV5PsIl6AXIDFAUq

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

2. 문제

학기가 끝나고, 학생들의 점수로 학점을 계산중이다.

학점은 상대평가로 주어지는데, 총 10개의 평점이 있다.


학점은 학생들이 응시한 중간/기말고사 점수 결과 및 과제 점수가 반영한다.

각각 아래 비율로 반영된다.


10 개의 평점을 총점이 높은 순서대로 부여하는데,

각각의 평점은 같은 비율로 부여할 수 있다.

예를 들어, N 명의 학생이 있을 경우 N/10 명의 학생들에게 동일한 평점을 부여할 수 있다.

입력으로 각각의 학생들의 중간, 기말, 과제 점수가 주어지고,

학점을 알고싶은 K 번째 학생의 번호가 주어졌을 때,

K 번째 학생의 학점을 출력하는 프로그램을 작성하라.

 

3. 제약사항

- N은 항상 10의 배수이며, 10이상 100이하의 정수이다. (10 ≤ N ≤ 100)

- K는 1 이상 N 이하의 정수이다. (1 ≤ K ≤ N)

- K 번째 학생의 총점과 다른 학생의 총점이 동일한 경우는 입력으로 주어지지 않는다.

 

4. 입력

입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.

다음 줄부터 각 테스트 케이스가 주어진다.

테스트 케이스의 첫 번째 줄은 학생수 N 과, 학점을 알고싶은 학생의 번호 K 가 주어진다.

테스트 케이스 두 번째 줄 부터 각각의 학생이 받은 시험 및 과제 점수가 주어진다.

 

5. 출력

테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

6. 풀이

- 총점을 구하고, 찾고자 하는 학생 점수를 기억하여 찾기

7. 소스 코드

import java.util.*;

public class Solution {
	 static String[] score={"A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"};
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt(); // 테스트 케이스의 개수
		for(int tc=1;tc<=T;tc++) {
			int N = sc.nextInt(); //학생 수
			int K = sc.nextInt(); //알고싶은 학생의 번호
			
			double find_score = 0.0; //K번호의 점수를 찾기 위해 저장
			Double[] result = new Double[N];
			
			//입력받기
			for(int i=0;i<N;i++) {
				int mid_score = sc.nextInt();//중간고사 점수
				int final_score = sc.nextInt();//기말고사 점수
				int sub_score = sc.nextInt();//과제 점수
				double sum = 0.35 * mid_score + 0.45 * final_score + 0.20 * sub_score; //총점
				result[i] = sum;
				if(i+1==K) find_score = sum;
			}
			
			Arrays.sort(result, Collections.reverseOrder());
			
			int index = 0;
			for(int i=0;i<result.length;i++) {
				if(result[i]==find_score) {
					index = i;
				}
			}
			
			index = index / (N/10);
			
			System.out.printf("#%d %s\n",tc,score[index]);
			
			
			
			
			
			
		}
	}
}

	

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기