반응형
https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.
www.acmicpc.net
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 정답과 출력값의 절대/상대 오차는 10-3이하이면 정답이다.
예제 입력 1
5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
예제 출력 1
40.000%
57.143%
33.333%
66.667%
55.556%
👉 풀이과정
평균과 평균이상인 사람 수를 구하고
(평균이상 학생 수 / 전체 학생수) * 100을 하면 백분율을 구할 수 있다.
소숫점 자릿수 출력하는 건 여러 방법을 사용해 봤는데
그냥 printf를 사용하는 게 제일 나은 것 같다.
소숫점 3번째 자리까지 출력해야 하므로
.3f를 넣고 "%" 도 같이 출력되어야 하니 %% 두 개를 넣는다.
결과는 줄바꿈이 되어야 하니까 \n도 넣어주면 끝!!!
📌 제출코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int c = scan.nextInt();
for(int i=0;i<c;i++){
int n = scan.nextInt();
int[] arr = new int[n];
int sum = 0;
for(int j=0;j<n;j++){
arr[j] = scan.nextInt();
sum+=arr[j];
}
double avg = (double)sum / n;
int cnt = 0;
for(int j=0;j<arr.length;j++){
if(arr[j] > avg){
cnt++;
}
}
double winner = (double)cnt/n * 100;
System.out.printf("%.3f%%\n",winner,"%");
}
}
}
반응형
'코딩테스트 > JAVA' 카테고리의 다른 글
| [JAVA/백준 2869번] 달팽이는 올라가고 싶다 (0) | 2023.12.02 |
|---|---|
| [JAVA/백준 10828번] 스택 (0) | 2023.12.01 |
| [JAVA/백준 1157번] 단어 공부 (0) | 2023.11.26 |
| [JAVA/백준 15439번] 베라의 패션 (0) | 2023.11.24 |
| [JAVA/백준 27323번] 직사각형 (1) | 2023.11.23 |