문제 설명

당신은 회사의 전 직원을 대상으로 재난 지원금을 지급하기 위해, 직원들의 평균 소득액을 계산하는 프로그램을 개발해 달라는 의뢰를 받았습니다.

단, 이때 평균 소득액을 공정하게 계산하기 위해 최상위 1건과 최하위 1건을 제외하고 평균을 내야 합니다.

의뢰 받은 프로그램을 구현하세요.


입력 형식

· arr : 직원들의 소득이 담긴 정수 배열


출력 형식

· 평균 소득을 소수점 아래 절삭하여 반환


제약 사항

· 3 <= arr.length <= 1000

· 0 < arr[i] <= 100000


입출력 예시

· 예시1

  · 입력

      · arr = {2, 3, 3, 3, 20}

  · 출력 : 3

  · 설명 : 최상위 1건(20)과 최하위 1건(2)를 제외한 평균은 3이다.

 

· 예시2

  · 입력

      · arr = {9, 4, 7, 5, 10, 4}

  · 출력 : 6

  · 설명 : 최상위 1건(10)과 최하위 1건(4)를 제외한 평균은 6.25이다. 출력은 소수점 아래를 절삭해야 하므로, 출력값은 6이다.


작성 코드

class Solution212 {
    public int solution(int[] arr) {
        int average = 0;
        int max = arr[0];
        int min = arr[0];
        int sum = arr[0];

        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
            if (arr[i] < min) {
                min = arr[i];
            }
            sum = sum + arr[i];
        }

        average = (sum - max - min) / (arr.length - 2);
        return average;
    }

    public static void main(String[] args) {
        Solution212 st = new Solution212();
        int[] arr = {2, 3, 3, 3, 20};
        System.out.println(st.solution(arr));
        int[] arr2 = {9, 4, 7, 5, 10, 4}; // 6.25
        System.out.println(st.solution(arr2)); // 6(소수점 절삭)
    }
}

 

정답 코드

import java.util.Arrays;

class Solution {
    public int solution(int[] arr) {
        Arrays.sort(arr);
        int sum = 0;
        for (int i = 1; i < arr.length - 1; i++) {
            sum += arr[i];
        }
        return (int)Math.floor((double)sum / (arr.length - 2));
    }

    public static void main(String[] args) {
        Solution st = new Solution();
        int[] arr = {2, 3, 3, 3, 20};
        System.out.println(st.solution(arr));
        int[] arr2 = {9, 4, 7, 5, 10, 4}; // 6.25
        System.out.println(st.solution(arr2)); // 6(소수점 절삭)
    }
}