알고리즘/백준
1546번 평균(java)
MoonjuLee
2023. 12. 4. 14:36
문제를 구현하는 것은 간단하다고 생각했다.
먼저 세준이의 과목을 첫 번째 줄에 입력받고, 두 번째 줄에는 빈칸(" ")으로 구분된 각 과목의 점수를 입력받는다.
이후 세준이의 야매(?) 점수 계산법을 통해 {(점수 / 최댓값) * 100} 각 과목의 점수를 바꾸고 바뀐 점수를 통해 우리가 흔히 사용하는 (각 과목 점수의 합 / 과목 수) 평균 식을 적용하여 출력을 하면 된다.
그런데 여기서 조금 생각해 보아야 하는 문제가 있다. 바로 예제 출력값에서 볼 수 있는 소수점이다.
이 소수점을 보고 정수형 자료형이 아닌 실수형 자료형을 생각하고 문제를 풀어야겠다고 생각했다.
코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int subjectNumber = Integer.parseInt(br.readLine()); // 과목 수
String[] strArr = br.readLine().split(" "); // 각 과목 별 실제 점수
br.close();
double[] scoreArr = new double[subjectNumber];
double maxScore = 0; // 최대 점수
double sum = 0; // 실제 점수의 합
for(int i = 0; i < subjectNumber; i++){
scoreArr[i] = Double.parseDouble(strArr[i]);
if(scoreArr[i] > maxScore){
maxScore = scoreArr[i];
}
sum += scoreArr[i];
}
System.out.println((sum/maxScore)*100/subjectNumber); // 과목 별로 계산하는 것이 아니라 한번에 합을 구해 야매(?) 계산법으로 평균 출력
}
}
문제 구현 난이도는 어렵지 않지만 다양한 자료형을 잘 쓰지 않아 헷갈릴 수 있는 문제를 통해 다시 기초를 상기할 수 있어서 도움이 되었다.