본문 바로가기
Algorithm/Beakjoon

[Java] baekjoon 4344 : 평균은 넘겠지 / 1차원 배열

by Amy97 2021. 8. 28.
728x90

문제 


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

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

해결 


평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력해야 하는 문제였다.

 

학생들의 점수를 배열의 원소로 입력받아

1. for문을 통해 총합을 구한 뒤

2. 평균을 구하고 (총합 / 전체 학생 수)

3. for문을 통해 평균보다 점수가 높은 학생의 수를 구한 뒤

4. 평균을 넘는 학생들의 비율을 구하였다. ((평균보다 점수가 높은 학생의 수 / 전체 학생 수) * 100)

 

printf() 메서드를 이용해 소수점 n번째 자리까지 출력하는 방법 

printf() 지시자 설명
%f 부동 소수점의 형식으로 출력
(소수점 이하 최대 6자리까지 표현)
%.nf 소수점 n번째 자리까지 출력
ex)
%.1f 소수점 첫째 자리까지 출력
%.5f 소수점 5번째 자리까지 출력
%.7f 소수점 7번째 자리까지 출력
%.11f 소수점 11번째 자리까지 출력

구현 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
 
        int c = sc.nextInt(); // 테스트 케이스의 개수 입력받음
 
        for (int i = 0; i < c; i++) { // 테스트 케이스의 수만큼 for문 실행
 
            int sum = 0// 총합을 저장할 변수를 선언하고 0으로 초기화
            int cnt = 0// 평균보다 점수가 높은 학생의 수를 저장할 변수를 선언하고 0으로 초기화
                         // 각각의 테스트 케이스를 확인할 때마다 0으로 초기화된다
            int n = sc.nextInt(); // 학생의 수 입력받음
            int[] score = new int[n]; // 학생의 점수를 저장할 배열 선언
 
            for (int j = 0; j < n; j++) { // 학생의 수만큼 for문 실행
                score[j] = sc.nextInt(); // 학생의 점수를 배열에 입력받음
            }
            for (int k = 0; k < n; k++) { // 학생의 수만큼 for문 실행
                sum += score[k]; // 학생의 점수를 각각 더해 총합을 구한다
            }
            double avg = (double) sum / n; // 평균 = 총합 / 학생 수
 
            for (int l = 0; l < n; l++) { // 학생의 수만큼 for문 실행
                if (score[l] > avg) { //l번째 학생의 점수가 평균보다 높으면
                    cnt++// 평균보다 점수가 높은 학생의 수를 저장하는 변수를 증가시킴
                }
            }
            double res = (((double) cnt / n) * 100); // 평균을 넘는 학생의 비율 = 평균보다 점수가 높은 학생 수 / 전체 학생 수) * 100
            System.out.printf("%.3f%%\n", res); // 소수점 셋째 자리까지 %와 함께 한 줄씩 띄워서 출력
        }
 
    }
}
cs

결과 


728x90

댓글