Algorithm/백준 알고리즘

[백준 알고리즘 / JAVA] 1546번 평균

newtownboy 2024. 1. 4. 00:27


문제 정보

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net


코드

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        String[] sArray = br.readLine().split(" ");
        
        int maxNumber = 0;
        int[] nArray = new int[N];
        for(int i = 0; i < N; i++) {
            int convertNumber = Integer.parseInt(sArray[i]);
            nArray[i] = convertNumber;
            
            if(maxNumber < convertNumber) {
                maxNumber = convertNumber;
            }
        }
        
        float sumNumber = 0;
        for(int i = 0; i < N; i++) {
            float calcNumber = (float)nArray[i] / maxNumber * 100;
            sumNumber += calcNumber;
        }
        
        System.out.println(sumNumber / N);
    }
}

풀이

Step1: 최댓값 찾기 및 배열 초기화

int maxNumber = 0;
int[] nArray = new int[N];
for(int i = 0; i < N; i++) {
    int convertNumber = Integer.parseInt(sArray[i]);
    nArray[i] = convertNumber;

    if(maxNumber < convertNumber) {
        maxNumber = convertNumber;
    }
}
  • 주어진 정수 배열의 각 원소를 정수로 변환하여 "nArray"에 저장합니다.
  • 동시에 최댓값을 찾아 "maxNumber"변수에 저장합니다.

Step2: 계산 및 합산

float sumNumber = 0;
for(int i = 0; i < N; i++) {
    float calcNumber = (float)nArray[i] / maxNumber * 100;
    sumNumber += calcNumber;
}

System.out.println(sumNumber / N);
  • 문제에서 요구한 대로 각 원소를 최댓값으로 나눈 후 100을 곱하여 "calcNumber"에 저장합니다.
  • "sumNumber"에 계산된 값인 "calcNumber"를 합산합니다.
  • 평균값을 내기 위해 점수의 개수인 N을 나누어 결과를 출력합니다.