알고리즘/BeakJoon

[BOJ] 4434.평균은 넘겠지.java

개발자 정지은 2024. 1. 31. 23:21

브론즈 5 문제부터 시작해서 차례 차례 단계를 높여가며 알고리즘 공부를 다시 본격적으로 시작할 계획이다

오늘은 그 첫문제로 4434 평균은 넘겠지를 풀어보았다

 

# 백준 4434 평균은 넘겠지[브론즈 1]

# 풀이 과정

우선 처음에는 평균보다 크거나 같은 것으로 구해서 답이 계속 이상하게 나왔다

평균 초과인 학생만 구하는 것이었다

그리고 숫자 타입을 어떤 것을 쓰느냐가 이 문제를 해결하는데 중요한 요소였다

처음에는 정답만 double형으로 선언하고 나머지는 int로 선언했더니 계속 답이 0.0% 가 나와서 조금 헤맸다

그리고 소수점 셋째 자리를 출력하는 방법을 알고 있어야 하는 문제다

 

# 자바 소수점 원하는 자리만큼 출력하는 방법

1. System.out.ptrintf() 사용

2. String.format() 사용

3. Math.round() 사용

 

# 정답 코드

package BRONZE;

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int tc = sc.nextInt();
		
		for(int t=1; t<=tc; t++) {
			
			int num = sc.nextInt();
			int [] arr = new int [num];
			double sum = 0;
			double avg = 0;
			
			for(int i=0 ; i<num; i++) {	
				int temp = sc.nextInt();
				arr[i] = temp;
				sum += arr[i];
			}
			
			avg = sum / num;
					
			double cnt = 0;
			
			for(int i=0; i<num; i++) {
				if(arr[i] > avg) {
					cnt++;
				}
			}
			
			System.out.printf("%.3f%%\n", (cnt/num)*100);
		}
			
	}	
}