본문 바로가기
백준 문제 풀이/1차원 배열

(#1546 Java) 평균

by _비니_ 2023. 8. 12.
문제

 

 

문제 이해

 

이 문제는 세준이의 점수를 입력 받고, 그 중 최댓값을 찾아 M이라구 했을 떄,

점수/M*100으로 모든 점수를 바꾼 후, 새로운 평균을 계산해 출력하는 문제다.

즉 세준이의 점수 조작,,,,

 

문제 해결

이 문제의 핵심은 배열, 최댓값, 합, 평균 등을 double 형태로 받아야 한다는 것이다.

int를 사용해 계산하면 소숫점까지 나오지 않아 문제가 원하는 출력 형태가 나오지 않는다.

 

우선 과목의 개수 N을 입력 받고, 배열, 최댓값 M, 합 sum을 생성 및 초기 작업을 해준다.

 

Scanner in = new Scanner(System.in);

int N = in.nextInt(); //과목 개수
double[] array = new double[N];
double M = array[0]; //우선 인덱스 0번째에 있는 값을 M으로 초기 설정.
double sum = 0;

 

 

과목 개수만큼 점수 입력받기.

 

for (int a = 0; a < N; a++) {
	array[a] = in.nextInt();
}

 

입력 받은 점수에서 최댓값 찾기

 

for (int i = 0; i < N; i++){
	if(array[i] > M) {
    	M = array[i];
    }
}

 

세준이가 원하는 점수로 ( 점수 / M * 100 ) 새로운 점수들을 만든 후 모든 과목의 합 만들기

 

for (int i = 0; i < N; i++) {
    array[i] = array[i]/M*100;
    sum += array[i];
}

 

구한 합으로 평균 구하기. (★평균 또한 double 형태로★)

 

double avg = sum/N;

 

 

최종 코드

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
    
    	Scanner in = new Scanner(System.in);

		int N = in.nextInt(); //과목 개수
		double[] array = new double[N];
		double M = array[0]; //우선 인덱스 0번째에 있는 값을 M으로 초기 설정.
		double sum = 0;
        
		for(int i = 0; i < N; i++) {
			array[i] = in.nextInt();
		}
        
		for(int i = 0; i < N; i++) {
			if(array[i] > M) {
				M = array[i];
			}
		}
        
		for(int i = 0; i < N; i++) {
			array[i] = array[i]/M*100;
			sum += array[i];
		}
        
		double avg = sum / N;
        
		System.out.println(avg);
	}
}
반응형

'백준 문제 풀이 > 1차원 배열' 카테고리의 다른 글

(#10811 Java) 바구니 뒤집기  (0) 2023.08.11
(#3052 Java) 나머지  (0) 2023.08.09
(#5597 Java) 과제 안 내신 분..?  (0) 2023.08.09
(#10813 Java) 공 바꾸기  (0) 2023.08.08
(#10810 Java) 공 넣기  (0) 2023.08.04