본문 바로가기
프로그래밍/백준 문제 풀이(자바)

백준 4344번 문제 자바 답/해설(평균은 넘겠지 문제)

by 리드민 2021. 11. 28.
반응형

[1] 백준 카테고리 단계별로 풀어보기
1차원 배열
7단계 4344번 문제
평균은 넘겠지
링크

https://www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net


[2] 문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

1. 입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

2. 출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.


3. 예제 입력 1

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

4. 예제 출력 1
40.000%
57.143%
33.333%
66.667%
55.556%

[3] 정답
1. 정답 해설 미포함

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int[] arr;
		int testcase = in.nextInt();

		for(int i = 0 ; i < testcase ; i++) {
			int n = in.nextInt();
			arr = new int[n];
			double sum = 0;

			for(int i1 = 0 ; i1 < n ; i1++) {
				int grade = in.nextInt();
				arr[i1] = grade;
				sum += grade;
			}
			
			double avg = (sum / n) ;
			double count = 0;
			
			for(int i2 = 0 ; i2 < n ; i2++) {
				if(arr[i2] > avg) {
					count++;
				}
			}
			
			System.out.printf("%.3f%%\n",(count/n)*100);
		}
		
		in.close();
	}

}

 

2. 정답 해설 포함

import java.util.Scanner;
//java.util.Scanner를 import 한다.

public class Main {
// Main 함수를 선언한다.
	public static void main(String[] args) {
	// 접근 제한 없이 메모리에 상주하고 리턴 값이 없이 main 함수를 선언한다.
		Scanner in = new Scanner(System.in);
		// 값을 입력받을수 있께 Scanner 변수 in를 선언한다.
		int[] arr;
		// 배열 arr[]를 선언한다.
		int testcase = in.nextInt();
		// 변수 testcase를 선언하고 값을 입력받아 testcase에 저장한다.

		for(int i = 0 ; i < testcase ; i++) {
			int n = in.nextInt();
			// 학생수를 입력받는다.
			arr = new int[n];
			// int 형 배열 arr를 n개 만큼 생성한다.

			double sum = 0;
			// 성적 합을 저장하는 double형 변수인 sum를 선언하고 0으로 초기화한다.

			// 성적을 입력하는 부분이다.
			for(int i1 = 0 ; i1 < n ; i1++) {
				int grade = in.nextInt();
				// 성적을 입력받아 그 값을 변수 grade에 저장한다.
				arr[i1] = grade;
				// 변수 grade 값을 변수 i1에 저장한다.
				sum += grade;
				// sum + grade 한 값을 변수 sum에 저장한다.
			}
			
			double avg = (sum / n) ;
			// double 형 변수 avg를 선언하고 sum/n한 값을 저장한다.
			double count = 0;
			// 평균 넘는 학생 수를 저장하는 변수인 count를 선언하고 초기화한다.
			
			// 평균 넘는 학생 비율를 찾는다.
			for(int i2 = 0 ; i2 < n ; i2++) {
				if(arr[i2] > avg) {
				// 변수 arr[i2]가 평균을 넘을 때마다 if문 안의 값이 실행된다.
					count++;
					// count값이 더해진다.
				}
			}
			
			System.out.printf("%.3f%%\n",(count/n)*100);
			// (count/n)*100한 결과 값을 소수점 3자리까지 출력한다.
		}
		
		in.close();
		// 객체 in의 사용을 종료한다.
	}

}
반응형