μ•Œκ³ λ¦¬μ¦˜ 문제/BOJ_Java

[BOJ/Step5] 4344 : 평균은 λ„˜κ² μ§€ (JAVA)

NaNaRinπŸ™ƒ 2021. 1. 9. 20:56

www.acmicpc.net/problem/4344

 

4344번: 평균은 λ„˜κ² μ§€

λŒ€ν•™μƒ μƒˆλ‚΄κΈ°λ“€μ˜ 90%λŠ” μžμ‹ μ΄ λ°˜μ—μ„œ 평균은 λ„˜λŠ”λ‹€κ³  μƒκ°ν•œλ‹€. 당신은 κ·Έλ“€μ—κ²Œ μŠ¬ν”ˆ μ§„싀을 μ•Œλ €μ€˜μ•Ό ν•œλ‹€.

www.acmicpc.net


문제

λŒ€ν•™μƒ μƒˆλ‚΄κΈ°λ“€μ˜ 90%λŠ” μžμ‹ μ΄ λ°˜μ—μ„œ 평균은 λ„˜λŠ”λ‹€κ³  μƒκ°ν•œλ‹€. 당신은 κ·Έλ“€μ—κ²Œ μŠ¬ν”ˆ μ§„싀을 μ•Œλ €μ€˜μ•Ό ν•œλ‹€.

 

μž…λ ₯

첫째 μ€„μ—λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 Cκ°€ μ£Όμ–΄μ§„λ‹€.

λ‘˜μ§Έ 쀄뢀터 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ§ˆλ‹€ ν•™μƒμ˜ 수 N(1 ≤ N ≤ 1000, N은 μ •μˆ˜)이 첫 수둜 μ£Όμ–΄μ§€κ³ , μ΄μ–΄μ„œ Nλͺ…μ˜ μ μˆ˜κ°€ μ£Όμ–΄μ§„λ‹€. μ μˆ˜λŠ” 0보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄λ‹€.

 

좜λ ₯

각 μΌ€μ΄μŠ€λ§ˆλ‹€ ν•œ 쀄씩 평균을 λ„˜λŠ” ν•™μƒλ“€μ˜ λΉ„μœ¨μ„ λ°˜μ˜¬λ¦Όν•˜μ—¬ μ†Œμˆ˜μ  μ…‹μ§Έ μžλ¦¬κΉŒμ§€ 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯

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%


풀이

1. ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€ num을 μž…λ ₯λ°›κ³  num의 개수만큼 반볡

2. ν•™μƒμ˜ 수λ₯Ό μž…λ ₯λ°›κ³  ν•™μƒμ˜ 수만큼 크기의 λ°°μ—΄snum을 생성해 점수λ₯Ό μ €μž₯. 점수λ₯Ό μ €μž₯ν•˜λ©΄μ„œ total 에 더함

3. 총 합을 학생 수둜 λ‚˜λˆ„μ–΄ 평균을 κ³„μ‚°ν•˜κ³ , 평균과 snum을 λΉ„κ΅ν•˜μ—¬ 평균보닀 높은 점수λ₯Ό κ°€μ§„ 학생 수λ₯Ό count 에 μ €μž₯

4. λΉ„μœ¨μ„ κ³„μ‚°ν•΄μ„œ μ†Œμˆ˜μ  μ…‹μ§Έμžλ¦¬κΉŒμ§€ 버퍼에 μ €μž₯

    => format() λ©”μ†Œλ“œ μ‚¬μš©

5. num만큼 λͺ¨λ‘ λ°˜λ³΅ν•œ ν›„ 버퍼에 남은 데이터λ₯Ό 좜λ ₯

 

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class B4344 {

	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in);
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int num = sc.nextInt();
		
		for(int i = 0; i < num; i++) {
			int snum = sc.nextInt();
			int count = 0;
			double total = 0;
			double[] score = new double[snum];
			for(int j = 0; j < snum; j++) {
				score[j] = sc.nextInt();
				total += score[j];		
			}
			double avg = (double)total / (double)snum;
			for(int j = 0; j < snum; j++) { 
				if(score[j] > avg) {
					count++;
				}
			}
			double ratio = ((double)count / (double)snum) * 100 ; 
			String s = String.format("%.3f", ratio);
			bw.write(s + "%\n");
		}

		bw.flush();
		bw.close();
	}

}