글 작성자: 취업중인 피터팬
728x90

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

 

2587번: 대표값2

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

www.acmicpc.net

 

문제 설명

 

간단하게 수를 정렬하여 중간값을 찾고 평군을 내는 문제입니다.

 

 

문제 풀이

해당 문제는 삽입정렬을 사용해서 풀도록 하겠습니다.

삽입 정렬에 대한 내용은 삽입 정렬 참고해주세요.

정렬에 대한 이해가 있다면 어렵지 않은 문제일 것입니다.

import java.util.Scanner;

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

        int[] array = new int[5];

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

        //평균값
        int avg = (array[0] + array[1] + array[2] + array[3] + array[4])/5;

        insert_sort(array);

        System.out.println(avg);
        System.out.println(array[2]);
    }

    public static void insert_sort(int[] array){
        for(int i=1; i<array.length; i++){
            int target = array[i];//타겟

            int j = i-1;//타겟과 비교될 인덱스

            /*
            * 비교될 인덱스가 0번까지 모두 비교되었거나
            * 타겟이 더 큰 값이 되지 전까지 반복
            */
            while(j >= 0 && target < array[j]){
                 //타겟이 더 큰값이 아닐경우 비교 인덱스를 뒤로 미룬다
                array[j + 1] = array[j];
                j--;//비교 인덱스를 줄인다.
            }

            /*
            * 반복문이 종료되었다면 j+1과 j는 같은 값을 가지고 있다.
            * j+1에 타겟값을 넣어주어 올바른 정렬을 만들어준다.
            */
            array[j+1] = target;
        }
    }
}