알고리즘/백준(BAEKJOON)

백준 1차원배열/4344 자바/평균은 넘겠지

jojelly 2021. 9. 29. 21:38
반응형

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

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

 

[풀이방법]

1. Scanner를 통해 값을 받는다

2. tastcase의 갯수를 받고 for문을 tastcase만큼 반복한다.

3. 각 케이스의 학생수를 int student로 받은후 student의 길이만큼의 arr배열을 생성해준다.

4. sum이라는 변수를 0으로 초기화 해둔 후 2중 for문을 구성하여 학생의 수만큼 반복하며 arr에 각 점수를 넣어준다.

5. arr에 들어간 점수를 sum 에 누적하여 합계를 만든다.

6. 이후 합계를 학생수로 나누어 mean이라는 변수에 저장

이후 for문을 구성하여 학생들의 점수가 mean(평균)보다 큰 학생의 점수를 비교한 후  평균을 넘는 학생의 수를 count를  통해 누적해준다. 

7.이제 평균을 넘는 학생의 퍼센트를 소수점 3자리까지 나타내주면 된다. 

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
38
39
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args) {
 
    Scanner sc = new Scanner(System.in);
 
    int[] arr;
 
    int testcase = sc.nextInt();    //케이스의 갯수
 
    for (int i=0; i<testcase; i++){
 
        int student = sc.nextInt(); //각 케이스의 학생수
        arr = new int[student];     //각 케이스의 학생수를 배열에 넣어줌
        int sum  = 0;               //각 케이스의 성적의 합
 
        for (int j=0; j<student; j++){
            arr[j] = sc.nextInt();  //배열에 점수 입력
            sum+=arr[j];            //성적합계에 각 점수 누적
        }
 
        int mean = sum/student;     //각 케이스의 평균
        int count = 0;
 
        for (int j=0; j<student; j++){
            if (arr[j]>mean){
                count++;
            }
        }
 
        //System.out.println("%3f%%\n",(count/student)*100);
        System.out.printf("%.3f"100.0 * count / student);
        System.out.println("%");
    }
    sc.close();
    }
}
 
cs
반응형