java

백준 2587번 문제 대표값2 (Java_자바)

먼지제거제 2024. 3. 10. 20:15

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

 

2587번: 대표값2

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

www.acmicpc.net

2587번 대표값2 문제
대표값2 예제 입력/출력

 

 

문제를 확인해 보자!

1. 주어진 5개의 정수를 배열에 저장,

2. 배열의 중앙값과 평균값을 계산, 출력

 

내가 틀린 부분!

평균값은 입력된 5개의 합을 5로 나누면 나오는데,

중앙값은 배열을 정렬했을 때 가운데 위치로 찾아야 하는데

첫 번째 시도 때 정렬... 을 안 했다... 어쩐지 쉽게 가더라...

 

아래에 부분 정리 해보자!


 

int arr[] = new int[5];

int center = 0; // 중앙 값
int avg = 0;    // 평균 값

 

중앙값과 평균값을 넣을 변수,

크기가 5인 배열을 생성

 

 for (int i = 0; i < 5; i++) {
    arr[i] = Integer.parseInt(br.readLine());
}

Arrays.sort(arr);

5개의 숫자를 입력받아 배열에 저장,

배열을 Arrays.sort() 메서드를 사용하여 배열을 오름차순으로 정렬

 

center = arr[2];
avg = (arr[0] + arr[1] + arr[2] + arr[3] + arr[4]) / 5;

차례로 중앙값, 평균값을 계산해서

변수에 넣어주고

출력해 주면 끝이다!!

 

아래에 코드를 합쳐보자!


Scanner

import java.util.Scanner;

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

        int arr[] = new int[5];

        int center = 0; // 중앙 값
        int avg = 0;    // 평균 값

        for (int i = 0; i < 5; i++) {
            arr[i] = sc.nextInt();
        }


        center = arr[2];
        avg = (arr[0] + arr[1] + arr[2] + arr[3] + arr[4]) / 5;

        System.out.println(avg);
        System.out.println(center);

    }
}

 

입력/출력

 

실패!?

 

틀렸다... 뭐지

내용을 다시 살펴보면

평균값은 상관없는데

입력받은 배열값을 정렬하지 않고 돌렸다..

 

* 정렬하지 않고는 정확한 중앙값을 구할 수 없다! *

다시 해보자!

 

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

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

        int arr[] = new int[5];

        int center = 0; // 중앙 값
        int avg = 0;    // 평균 값

        for (int i = 0; i < 5; i++) {
            arr[i] = sc.nextInt();
        }

        Arrays.sort(arr);

        center = arr[2];
        avg = (arr[0] + arr[1] + arr[2] + arr[3] + arr[4]) / 5;

        System.out.println(avg);
        System.out.println(center);

    }
}

 

두근두근..

성공!!

성공!!!

 

아래 다른 방식으로 코딩해 보자!


BufferedReader

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

public class RepresentativeValue_2587 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int arr[] = new int[5];

        int center = 0; // 중앙 값
        int avg = 0;    // 평균 값

        for (int i = 0; i < 5; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }

        Arrays.sort(arr);

        center = arr[2];
        avg = (arr[0] + arr[1] + arr[2] + arr[3] + arr[4]) / 5;

        System.out.println(avg);
        System.out.println(center);

    }
}

 

성공!!

 

 

하하.. 정렬 단계의 문제였는데

정렬을 하지 않아서... 틀렸다..

문제 해석을 잘하자!

 

파이팅 하자!