응애개발자
article thumbnail
728x90

문제

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

 

접근 방법

  1. N이 주어졌을때 30%의 절사평균을 하여 상위 15% 하위 15%를 제외한다.
  2. 따라서 배열을 정렬하여 Math.round를 통해 반올림된 인원을 제외한 나머지를 반복문을 돌며 더해준다.
  3. 더하고 난 뒤 평균으로 나눌때에도 첫째자리 반올림을 통해 답을 구하는 문제이다.

코드

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

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static int N;
    private static int[] arr;
    private static float sum;

    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        N = Integer.parseInt(br.readLine());
        arr = new int[N];

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

    //실행
    public static void process() {
        Arrays.sort(arr);

        int num = (int)Math.round(N*0.15);

        for(int i = num ; i < N-num ; i++){
            sum+=arr[i];
        }

        System.out.println(Math.round(sum/(N-num*2)));
    }


    public static void main(String[] args) throws Exception {
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!