우당탕탕 개발일지
[SWEA] 1983. 조교의 성적 매기기(Java, D2) 본문
반응형
문제
총점 = 중간(35) + 기말(45) + 과제(20)
10개의 평점
"A+", "A0", "A-", "B+", "B0", "B-", "c+", "C0", "C-", "D0"
10 개의 평점을 총점이 높은 순서대로 부여하는데, 각각의 평점은 같은 비율로 부여할 수 있다.
예를 들어, N 명의 학생이 있을 경우 N/10 명의 학생들에게 동일한 평점을 부여할 수 있다.
[ 입력값 ]
1. 입력으로 각각의 학생들의 중간, 기말, 과제 점수가 주어짐
2. 학점을 알고싶은 K 번째 학생의 번호 주어짐
K번째 학생의 평점을 구하여라
입출력 예
풀이
코드
Scanner sc = new Scanner(System.in);
int tc = sc.nextInt();
String[] str_finalScore = { "A+", "A0", "A-", "B+", "B0", "B-", "c+", "C0", "C-", "D0" }; // 학점
for (int t = 0; t < tc; t++) {
int n = sc.nextInt(); // 학생 수
int k = sc.nextInt(); // 구해야 하는 학생 Index
int result = -1;
int[][] score = new int[n][3]; // 중간(35), 기말(45), 과제(20)
HashMap<Integer, Double> indexFScoreMap = new HashMap<>(); // Key : index, value : 총점
// 2차배열 초기화
for (int a = 0; a < n; a++) {
double finalScore = 0;
for (int b = 0; b < 3; b++) {
score[a][b] = sc.nextInt();
switch (b) {
case 0: // 중간 (35)
finalScore += score[a][b] * 0.35;
break;
case 1: // 기말 (45)
finalScore += score[a][b] * 0.45;
break;
case 2: // 과제(20)
finalScore += score[a][b] * 0.20;
break;
}
}
indexFScoreMap.put(a + 1, finalScore);
}
// 내림차순
List<Integer> keySort = new ArrayList<>(indexFScoreMap.keySet());
Collections.sort(keySort, (o1, o2) -> (indexFScoreMap.get(o2).compareTo(indexFScoreMap.get(o1))));
// key의 index (순위) 구하기
int i = 0;
for (Integer key : keySort) {
if (key == k)
break;
i++;
}
result = i / (n / 10);
System.out.println("#" + (t + 1) + " " + str_finalScore[result]);
}
SWEA 문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PwGK6AcIDFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
반응형
'코테 > SW Expert Academy' 카테고리의 다른 글
[SWEA] 1234. [S/W 문제해결 기본] 10일차 - 비밀번호(Java, D3) (0) | 2024.05.13 |
---|---|
[SWEA] 14178. 1차원 정원(Java, D3) (0) | 2024.05.13 |
[SWEA] 1979. 어디에 단어가 들어갈 수 있을까(Java, D2) (0) | 2024.04.29 |
[SWEA] 1989. 초심자의 회문 검사(Java, D2) (0) | 2024.04.29 |
[SWEA] 1926. 간단한 369게임(Java, D2) (0) | 2024.04.25 |