본문 바로가기

Language/JAVA

[JAVA][백준 18110][구현] solved.ac - 컴도리돌이

728x90
728x90

 

 

 

18110번: solved.ac

5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다.

www.acmicpc.net


 

오랜만에 백준 문제를 푸는데 실버, 브론즈 문제도 버벅거리네요.🥲

이번 문제는 가벼운 구현 문제예요.

시간제한이 조금 힘들어서 정답 비율은 낮지만,

원래 배열과 BufferedReader를 사용하시는 분들이면 

어렵지 않게 구현할 수 있을 거예요 😆

 

문제에서 상위 15 % 와 하위 15 %를 제외한 나머지 인원에 대한 평균을 출력하는 문제입니다. 

n을 초기 입력받아서 array 크기를 할당시켜 줍니다.

그리고 개행마다 숫자를 n만큼 array에 저장을 하고 정렬을 시켜줍니다.

상/하위 15%를 구분해줘야 하기 때문에 0.15을 n에 곱해서 반올림 처리한 후

상/하위 안에 있는 값들을 더해줍니다. 

마지막으로 상/하위 15%를 제외한 값으로 더해준 값을 나누고 반올림 처리하여 출력하면 됩니다. 

 

실버 난이도는 다른 예외 상황 생각하지 않고 쉽게 구현할 수 있는 거 같아요 

🤔


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];

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

        Arrays.sort(arr);

        int flag = (int) Math.round(n * 0.15);

        double sum = 0;

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

        System.out.println((int) Math.round(sum / (n - flag - flag)));
    }
}
728x90
728x90