📝 문제
❗ 주의
문제풀이를 하면서 소수점 첫번째 자리에서 반올림하는 Math.round() 함수를 사용할 텐데,
Math.round()는 double을 인자로 받으면 long을 반환, float를 인자로 받으면 int를 반환한다.
int로 받고 싶으면 인자에 float형을 넣던지, 아님 (int)를 앞에 적어주어 형변환 해주면 된다.
나는 두 가지 방법 모두 사용해봤다.
int r = Math.round(n * 0.15f);
int grade = (int)Math.round(avg); //avg는 double형
🔑 풀이 과정
이 문제는 문제 설명에 나와있는 걸 그대로 코드에 작성하기만 하면 정답이다.
양 끝 15%를 제외해야 하니깐 입력 받은 값을 정렬해야 한다는 점만 유의하면 아주 쉬울듯 하다.
코드의 주석만 봐도 설명이 다 될듯해서 풀이과정은 X
🔓 답안
import java.io.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//n개의 난의도 의견 입력받기
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);
//15%가 몇명인지 구하기
int r = Math.round(n * 0.15f);
//양 끝 15%를 제외한 난이도 의견 합 구하기
int sum = 0;
for(int i = r; i < n-r; i++){
sum += arr[i];
}
//평균 구하기
double avg = (sum * 1.0) / (n - 2*r);
//최종 난이도
int grade = (int)Math.round(avg);
//출력
bw.write(grade + "\n");
bw.flush();
bw.close();
}
}
🖤 알고리즘 분류
- 수학
- 구현
- 정렬
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 1966 - 프린터 큐 (0) | 2023.06.15 |
---|---|
[Baekjoon] 4949 - 균형잡힌 세상 (0) | 2023.06.14 |
[Baekjoon] 1676 - 팩토리얼 0의 개수 (0) | 2023.06.12 |
[Baekjoon] 10816 - 숫자 카드 2 (0) | 2023.06.11 |
[Baekjoon] 10845 - 큐 (0) | 2023.06.10 |
댓글