728x90
https://www.acmicpc.net/problem/1546
[문제]
[코드]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double max = 0.0;
int N = sc.nextInt();
double arr[] = new double[N]; //과목의 수
double average = 0;
for(int i = 0 ; i < N; i++) {
arr[i] = sc.nextDouble(); // i번째 과목의 점수
if(arr[i] > max) {
max = arr[i];
}
}
for(int i = 0; i < N; i++) {
arr[i] = arr[i]/max*100; //i번째 과목의 바뀐 점수
average = average + arr[i];
}
System.out.println(average/N);
sc.close();
}
}
[설명]
1. 이 문제를 요약하자면 총 시험을 본 과목 중 최대값을 구한 후 각 점수/최대값*100을 해서 과목의 수만큼 나눠 평균을 구하는 문제이다.
2. 최대값을 구하려면 우선 max를 0으로 초기화 해 둔 상태로 각 과목의 점수를 입력받아 0번째부터 N번째까지 비교해가면서 구할 수 있다.
3. 과목들을 배열에 넣고 0번방 부터 max보다 크다면 max에 그 과목의 점수를 넣어주기를 반복하면 최대값을 쉽게 구할 수 있다.
4. 최대값을 구했기 때문에 각 과목들/최대값*100을 계산할 수 있게 되었다. 이때 만약, arr[]가 int형으로 주어진다면 결과가 0으로 나오기때문에 double타입으로 설정해준다.
5. 평균을 구하기 위해 double타입의 average에 바뀐 과목들의 점수를 더한다.
6. 더한 점수를 N으로 나누면 결과가 출력된다.
[결과]
728x90
'백준(Baekjoon)' 카테고리의 다른 글
[백준/자바] 2920번: 음계 (0) | 2022.05.31 |
---|---|
[백준] 2908번: 상수 - 자바 (0) | 2022.05.19 |
[백준] 2675번: 문자열 반복 - 자바 (0) | 2022.05.18 |
[백준] 2577번: 숫자의 개수 - 자바 (0) | 2022.05.17 |
[백준] 10872번: 팩토리얼 - 자바 (0) | 2022.05.16 |