[백준] 4344번 평균은 넘겠지 - Java(자바)

이정우·2021년 8월 15일
0

백준

목록 보기
1/32


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int test_case = sc.nextInt(); // 테스트 케이스 수 입력

		for (int i = 0; i < test_case; i++) {
			int stu_Num = sc.nextInt(); // 학생 수
			int count = 0; // 평균을 넘는 학생 수
			double avg = 0; // 평균 점수.
			double avg_Over; // 평균을 넘는 학생 비율 구할 때 사용
			int[] score_arr = new int[stu_Num]; // 각 점수를 저장할 배열 생성
			for (int j = 0; j < stu_Num; j++) {
				int score = sc.nextInt();
				score_arr[j] = score; // 각 점수를 배열에 저장
				avg += score; // 점수의 합 구하기.
			}
			avg = avg / stu_Num; // 평균 점수 구하기.
			for (int k = 0; k < score_arr.length; k++) {
				if (score_arr[k] > avg) {
					count++;
				}
			}
			avg_Over = (double) count / stu_Num * 100; // count를 double로 강제형 변환 시켜서 원하는 백분율 계산하기. 
            								   //  std_Num은double / int이므로 자동 형변환이 일어나서 따로 안바꿔줘도 괜찮은듯.
			System.out.printf("%.3f", avg_Over);
			System.out.println("%");
		}
	}
}

배열과 다중 for문을 이용한 문제였습니다. 마지막 부분에 avg_Over에서 평균을 넘는 학생 수를 구할 때 그냥 / %를 사용할 경우 변수 count와 stu_Num이 int형이기에 원하는 답이 나오지 않습니다(예를 들어 5/2를 하면 2.5를 원하지만 int형이기에 2가 나옵니다.). 이 부분을 고치기 위해 변수중 하나를 double로 강제 형변환 시켜줘서 double / int를 만들어서 원하는 식을 얻었습니다.

출처 : 백준 4344번 https://www.acmicpc.net/problem/4344

profile
프로그래밍 공부 중!

2개의 댓글

comment-user-thumbnail
2021년 8월 15일

시비거는건 아닌데 3번째줄에 오류가 보이네요ㅎ

1개의 답글