공부 흔적남기기

백준 4344 평균은 넘겠지 본문

코테/백준

백준 4344 평균은 넘겠지

65살까지 코딩 2022. 1. 19. 09:50
728x90
반응형
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //테스트 케이스만큼 입력받음
        int C = Integer.parseInt(br.readLine());
        int n = 0;
        List<Double> list = new ArrayList<>();
        double count =0;
        double sum = 0d;
        double tmp;
        for (int i = 0; i < C; i++) {
            //값들 다 비워주기
            sum = 0d;
            count =0;
            list.clear();
            //학생들 마다의 점수와 개수 받기
            String s = br.readLine();
            StringTokenizer st = new StringTokenizer(s);
            //개수는 처음에 나옴
            n = Integer.parseInt(st.nextToken());
            while (st.hasMoreTokens()) {
            //점수 입력받고 
                tmp = Double.parseDouble(st.nextToken());
                sum += tmp;
                list.add(tmp);
            }
			//평균에 넣은뒤
            sum = sum/n;
            // 평균보다 높은사람 있으면 count ++
            for (Double aDouble : list) {
                if(aDouble > sum){
                    count ++;
                }
            }
            //확률 구하기
            count = count/n *100;
            count = Math.round(count * 1000) / 1000.0;
            //3째자리까지 출력
            System.out.printf("%.3f%s\n",count,"%");

        }

    }

}

얼마전에 똑같은 문제를 풀었는데 풀이가 좀 다르다 이 때는 bw을 자주 사용했고

요즘은 sb를 사용하거나 sout을 사용하는중 근데 시간을보면 왔다갔다해서 케이스별로 나눠서 사용하는게 좋을 듯

import java.io.*;


public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int c = Integer.parseInt(br.readLine());
        for (int i = 0; i < c; i++) {
            String[] scores = br.readLine().split(" ");
            int n = Integer.parseInt(scores[0]);
            int[] score = new int[n];
            int sum = 0;
            for (int j = 0; j < n; j++) {
                score[j] = Integer.parseInt(scores[j+1]);
                sum += score[j];
            }
            int avg = sum / n;
            double higher = 0d;
            for (int j = 0; j < n; j++) {
                if (score[j] > avg) {
                    higher += 1.0;
                }
            }
            double answer = 100 * higher / n;
            if (i < c - 1) {
                bw.write(String.format("%.3f", answer)+'%' + "\n");
            }else{
                bw.write(String.valueOf(String.format("%.3f", answer)+'%'));
            }
        }

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

}

 

 

728x90
반응형

'코테 > 백준' 카테고리의 다른 글

백준 2941 크로아티아 알파벳 자바  (0) 2022.01.20
백준 4673 셀프넘버  (0) 2022.01.19
백준 1110 더하기 사이클  (0) 2022.01.18
백준 2884 알람 시계  (0) 2022.01.18
백준 2588 곱셈  (0) 2022.01.17