본문 바로가기
PS/Baekjoon

[Baekjoon] 1546 - 평균

by 서현 SEOHYEON 2022. 11. 8.

📝 문제

 

 주의

출력시 실수형으로 출력해야함.

마지막 평균 연산시 전부 정수로 연산하지 말 것.

 

 

🔑 풀이 과정

새로운 평균을 구하는 공식을 계산했다.

총 3번을 풀어서 정답을 받았다. 1번째 2번째 시도도 예제케이스를 잘 출력해서 당황스러웠다.

합계를 구하는 것은 문제가 없는데, 최댓값 or 평균을 구하는 것에서 문제가 있던듯 하다.

 

아직도 명확히 틀린점을 모르겠지만... 1번째 제출과 3번째 제출의 차이점은

① 최댓값을 처음 구할때 max = arr[0] 이라 했던 것을 max = 0 으로 초기화함

② 마지막 출력 값을 double avg = (100 * sum) / n / max 에서 System.out.println(sum * 100.0 / max / n); 로 변경함(전자로 했어도 소수점이 출력이 잘 됐었다... 그래서 더 당황스러운)

 

 

🔓 답안

import java.util.Scanner;

public class Main {

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

        // 첫째 줄에는 시험 본 과목의 개수 N이 주어짐
        int n = sc.nextInt();
        int[] arr = new int[n];

        // 둘째 줄에 세준이의 현재 성적이 주어짐
        for(int i = 0; i < n; i++){
            arr[i] = sc.nextInt();
        }

        int sum = 0;
        // 최대값 구하기
        double max = 0;
        for(int i = 0; i < n; i++){
            if(arr[i] > max){
                max = arr[i];
            }
            sum = sum + arr[i];
        }

        // 새로운 평균 구하기
        System.out.println(sum * 100.0 / max / n);

        sc.close();
    }

}

 

 

+ for문으로 최대값을 구하지 않고,

Array.sort()를 사용하여 오름차순으로 정렬한 뒤 맨 마지막 값을 최대값으로 저장한 방법.

최대값, 합계(sum)을 따로따로 구해서 코드가 길어지길래 합계를 입력받으면서 구해보았다.

import java.util.Scanner;
import java.util.Arrays;

public class Main {

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

        // 첫째 줄에는 시험 본 과목의 개수 N이 주어짐
        int n = sc.nextInt();
        int[] arr = new int[n];

        int sum = 0;
        // 둘째 줄에 세준이의 현재 성적이 주어짐
        for(int i = 0; i < n; i++){
            arr[i] = sc.nextInt();
            sum = sum + arr[i];
        }

        
        // 최대값 구하기
        double max = 0;
        
        Arrays.sort(arr);
        max = arr[n-1];

        // 새로운 평균 구하기
        System.out.println(sum * 100.0 / max / n);

        sc.close();
    }

}

'PS > Baekjoon' 카테고리의 다른 글

[Baekjoon] 11659 - 구간 합 구하기 4  (0) 2022.11.10
[Baekjoon] 11720 - 숫자의 합  (0) 2022.11.09
[Baekjoon] 5597 - 과제 안 내신 분..?  (0) 2022.11.07
[Baekjoon] 10926 - ??!  (0) 2022.11.05
[Baekjoon] 2742 - 기찍 N  (0) 2022.11.04

댓글