본문 바로가기

JAVA

자바 평균 구하기, 정수 실수 형변환(백준 1546, 4344 정답 코드)

메소드 이용 없이 직접 평균을 구할 때는 숫자들을 모두 합산한 뒤 숫자의 개수로 나누면 된다.

 

< 백준 1546번 평균 >

// 입력: 첫 번째 줄에 개수, 두번째 줄에 시험점수
// 출력: 시험점수의 max값을 적용한 조작된 평균

// 유의점: 오차를 최소화하기 위해 숫자를 double형으로 입력받은 후 계산해야 한다.

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int num = sc.nextInt();
        
        if(num == 0)
            System.out.println(num);
        else{
            double cur = sc.nextInt();
            double sum = cur, max = cur;
        
            for(int i=1; i<num; i++){
                cur = sc.nextInt();
                sum += cur;
            
                if(cur>max)
                    max = cur;
            }
        
            double avg = sum/num;
            double newAvg = avg/max*100;
        
            System.out.println(newAvg);
        }
    }
}

 

 

< 백준 4344번 평균은 넘겠지 >

// 입력: 첫째 줄에 시험 수, 이후 각 줄마다 학생수 N, N명의 점수 이어짐
// 출력: 각 줄마다 평균을 넘는 학생의 비율. 반올림하여 소수점 셋째 자리까지.

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        int num = sc.nextInt();
        sc.nextLine();
        
        for (int i=0; i<num; i++){
            String line = sc.nextLine();
            
            String[] list = line.split(" ");
            double score = 1, sum = 0, count = 0;
            double snum = Double.parseDouble(list[0]);
			
            for (int j = 1; j<=snum; j++)
            	sum += Double.parseDouble(list[j]);
			
            double avg = sum/snum;
            
            for (int k = 1; k<=snum; k++){
            	if(Double.parseDouble(list[k]) > avg)
                	count++;
            }
			
            double result = count/snum*100;
            System.out.printf("%.3f%%\n", result);	//String.format이나 round를 사용하는 것보다 훨씬 편리함
        }
    }
}