본문 바로가기
Problem Solving/백준

[백준 알고리즘] 4344: 평균은 넘겠지 풀이(자바)

by 청량리 물냉면 2021. 8. 3.
반응형
문제

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

 

4344번: 평균은 넘겠지

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

www.acmicpc.net

 

 

코드
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int test = sc.nextInt();	//테스트 케이스 수
		int sum, cnt;
		double avg;	
		
		for(int i = 0; i < test; i++) {	//테스트 케이스 수 만큼 반복
			int sNum = sc.nextInt();	//학생 수 입력
			
			int [] arr = new int[sNum];	//학생 수만큼 배열 생성
			sum = 0;	//성적 합
			cnt = 0;	//평균 이상 점수를 받은 학생 수 카운트
			
			//성적 입력 및 모든 성적 sum 변수에 저장
			for(int j = 0; j < sNum; j++) {
				arr[j] = sc.nextInt();
				sum += arr[j];
			}
			
			//평균 구하기
			avg = sum / sNum;
			
			//평균보다 배열의 값(학생의 성적)이 큰 경우 카운트
			for(int j = 0; j < sNum; j++) {			
				if(arr[j] > avg) {
					cnt++;
				}
			}
			
			//퍼센테이지 구하기
			double percent = ((double)cnt / (double)sNum) * 100.0;

			System.out.println((String.format("%.3f", percent)) + "%");
		}
		
		sc.close();
	}
}

 

 

마무리

헷갈렸던 것

1. nextInt: 띄어쓰기, 개행문자가 나올 때까지 값을 입력받는다.

2. 소수점 아래 n자리까지 출력 방법

https://coding-factory.tistory.com/250

 

[Java] 자바 소수점 n번째 자리까지 반올림하기

이번 포스팅에서는 자바에서 긴 소수를 반올림하여 n번째 자리까지 나타내는 방법에 대해 알아보겠습니다. 여러가지 방법이 있겠습니다만 Math.round();함수를 활용하거나 String.format(); 함수를 활

coding-factory.tistory.com

이 외에도 printf 이용해서 c언어처럼 출력할 수도 있다. 

ex. System.out.printf("%.3f\n", ((double)cnt / (double)sNum) * 100.0);   

     //((double)cnt / (double)sNum) * 100.0을 소수점 세자리까지 실수 형태로 출력.

 

 

 

 

 

+콘솔창 같은 라인에 있어도 하나는 입력이고 하나는 출력일 수 있는 건데 모두 출력이라고 생각하고 학생수까지 배열에 꾸역꾸역 넣으려다 보니 문제도 안 풀리고 시간만 많이 썼다.

유도리 있게 생각하도록 노력하자!

반응형