suheang

[백준] | JAVA, 자바 | 2592번 - 대표값 본문

알고리즘

[백준] | JAVA, 자바 | 2592번 - 대표값

suheang 2024. 4. 15. 21:22

https://www.acmicpc.net/problem/2592

 

2592번: 대표값

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30, 20, 60, 30, 40, 50의 평균은

www.acmicpc.net


문제 요약 :

어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 

평균 이외의 또 다른 대표값으로 최빈값이라는 것이 있다. 최빈값은 주어진 수들 가운데 가장 많이 나타나는 수이다. 예를 들어 10, 40, 30, 60, 30, 20, 60, 30, 40, 50이 주어질 경우, 30이 세 번, 40과 60이 각각 두 번, 10, 20, 50이 각각 한 번씩 나오므로, 최빈값은 30이 된다.

열 개의 자연수가 주어질 때 이들의 평균과 최빈값을 구하는 프로그램을 작성

 

( 첫째 줄에는 평균을 출력하고, 둘째 줄에는 최빈값을 출력한다. 최빈값이 둘 이상일 경우 그 중 하나만 출력한다. 평균과 최빈값은 모두 자연수 )


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] numbers = new int[10];
        int[] count = new int[1001];

        int sum = 0;
        for (int i = 0; i < 10; i++) {
            numbers[i] = Integer.parseInt(br.readLine());
            sum += numbers[i];
            count[numbers[i]]++;
        }

        int avg = sum / 10;

        int max = 0;
        int maxNum = 0;
        for (int i = 1; i <= 1000; i++) { 
            if (count[i] > max) {
                max = count[i];
                maxNum = i;
            }
        }

        System.out.println(avg);
        System.out.println(maxNum);
    }
}

 

1. 숫자를 저장할 배열 numbers와 최빈값을 구할 배열 count 생성

2. 숫자들의 합을 계산할 변수 sum 생성

3. for문을 통해 숫자 10개를 입력받고 입력받은 숫자들을 sum으로 합 계산, 입력받은 수는 배열 count의 값 1증가

4. 평균을 구함

5. 최빈값을 구할 때 사용할 변수 max, maxNum 생성

6. 배열 count에서 가장 높은 수를 구하고 maxNum에 저장

7. 계산한 평균 값과 최빈값을 출력