🔑알고리즘/baekjoon

백준 4344 : 평균은 넘겠지 - Java(자바) 성공 풀이

pkyung 2021. 5. 5. 10:53
반응형

 

처음에는 문제 이해를 잘못해서 계속 틀렸습니다:)

예제 입력
5                                          //배열의 개수
5 50 50 70 80 100                    //배열의 길이 배열에 넣을 수들...
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91
예제 출력
40.000%
57.143%
33.333%
66.667%
55.556%

 

소수점 세 자리에서 반올림 해서 출력하는 것이 포인트였는데요. 

System.out.printf("%.3f",숫자) 형태를 사용했습니다. 

math.round(100*숫자)/100.0를 사용하는 것은 불가합니다. 왜냐하면 출력예제에서 40.000%로 출력하라고 했기 때문입니다.

math.round를 사용하면 40.0으로 출력이 됩니다.

 

 

4344 문제 자바 코드
import java.util.Scanner;

public class arrayAverage {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt(); //몇 개의 배열을 받을 지

		for (int i = 0; i < n; i++) {
			int sum = 0;
			double max = 0;
			int[] array;
			int number = sc.nextInt(); //배열의 길이
			array = new int[number];
			for (int j = 0; j < number; j++) {
				int num = sc.nextInt(); //배열 속에 들어갈 정수
				array[j] = num; //배열에 넣기
				sum += array[j];
			}
			for (int j = 0; j < number; j++) {
				if (sum / number < array[j])
					max += 1; //평균보다 큰 학생수
			}
			System.out.printf("%.3f", max / number * 100); //소수점 세 자리까지 출력
			System.out.println("%");

		}
		sc.close();
	}

}

결과 입니다.

반응형