https://swexpertacademy.com/main/code/problem/problemDetail.do
문제 접근
문제를 읽으면서 느낌 자체는 쉽다는 느낌을 받았음에도 불구하고 푸는데 생각보다 오래걸렸다.
처음에 학점을 배열로 안만들고 학생 수에 따라 맞춰서 넣어주려니 방법이 잘 떠오르지 않았다.
유연한 사고가 참 중요하다 느낀다.
학생들 수 만큼 반복문 돌리면서 시험 점수와 총점을 계산하고 찾아야할 학생의 총점도 따로 저장해준다.
이후 내림차순 정렬 후
정렬된 배열을 처음부터 찾아가면서 저장해둔 점수와 일치한다면 해당 차례의 인덱스로 만들어둔 학점 배열과 매치시킨다.
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] credit = { "A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"};
int T = sc.nextInt();
for(int i=0; i<T; i++) { // Test Case
int studentNum = sc.nextInt();
int K = sc.nextInt();
int[] middleExam = new int[studentNum];
int[] finalExam = new int[studentNum];
int[] assignment = new int[studentNum];
Integer[] sum = new Integer[studentNum];
int checkScore = 0;
for(int j=0; j<studentNum; j++) {
middleExam[j] = sc.nextInt();
finalExam[j] = sc.nextInt();
assignment[j] = sc.nextInt();
sum[j] = (middleExam[j] * 35) + (finalExam[j] * 45) + (assignment[j] * 20);
if(j+1 == K) checkScore = sum[j]; // 찾는 학생의 총점 확인
}
Arrays.sort(sum, Collections.reverseOrder());
int count = 0;
for(int j=0; j<studentNum; j++) {
if(sum[j] == checkScore) count = j;
}
count = count / (studentNum/10);
System.out.println("#"+ (i+1) +" " +credit[count]);
}
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA / 초심자의 회문 검사 / JAVA] (0) | 2023.04.25 |
---|---|
[SWEA / 스도쿠 검증 / JAVA] (0) | 2023.04.07 |
[SWEA / 달팽이 숫자 / JAVA] (0) | 2023.04.06 |
[SWEA / 간단한 압축 풀기 / JAVA] (0) | 2023.04.04 |
[SWEA / 중간 평균값 구하기 / JAVA] (0) | 2023.02.20 |
댓글