[백준/JAVA] 1차원 배열 - 4344번 평균은 넘겠지

신승현·2022년 8월 8일
0

더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!


📝 문제


4344번 평균은 넘겠지


🤷‍♂️ 접근 방법


이번 문제는 계산 과정에서의 자료형 변환과 %를 출력하는 것이 핵심이다. 이번 문제를 풀며 %를 출력하는 방법을 알게 되었다.
원래 자바 특수문자의 경우 백슬래시를 사용하여 출력하기 때문에 %도 백슬래시를 사용하지 않을까 생각했지만 %%를 사용한다. 아래의 코드를 통해 %의 출력방법을 알아보자.
다른 특수문자 출력 방법도 링크 를 통해 알아보자

System.out.printf("%.3f%%", result); 

다음으로 이 문제를 풀 때 중요한 것은 자료형이다. 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력해야 함으로 이 계산에서 형변환이 필요하다.

평균을 넘는 학생들을 int cnt 변수로 선언하였고 학생의 수를 int num 으로 선언하여 평균을 넘는 학생들의 비율을 계산할때는 각각을 double로 형변환 해주었다.

double result = ((double)cnt /(double)num) * 100;

✍ 풀이


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int C = sc.nextInt();

        for(int i =0; i< C; i++){
            int num = sc.nextInt();
            int arr[] = new int[num];
            int sum = 0;

            for(int j = 0; j < num; j++){
                arr[j] = sc.nextInt();
                sum += arr[j];
            }
            double avg = sum / num;
            int cnt = 0;

            for(int k = 0; k < num; k++){
               if(arr[k] > avg ) cnt++;
            }

            double result = ((double)cnt /(double)num) * 100;
            System.out.printf("%.3f%%\n", result);

        }

    }
}


profile
I have not failed. I've just found 10,000 ways that won't work. - Thomas A. Edison

0개의 댓글