본문 바로가기
백준

[백준] 단계별로 풀어보기(단계:5,1차원 배열,JAVA)4344번, 평균은 넘겠지

by 열정적인 이찬형 2021. 12. 16.

문제 링크

4344번: 평균은 넘겠지
 
www.acmicpc.net

주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

  • BufferedReader를 사용하여 입력값을 저장합니다.
  • 케이스 개수를 받아서 크기만큼 배열(arr)을 만들었습니다.
  • 열의 성적 개수만큼 배열(score)를 만들어서 StringTokenizer를 통해 점수를 배분하였습니다.
  • for문을 통해 배분한 점수의 평균을 구하고 평균보다 큰 값의 개수를 구하였습니다.
  • 큰 값의 개수의 퍼센트율을 구하여 소수 3자리까지 반올림하도록 String.format을 사용하였습니다.
  • bw에 각 열의 퍼센트를 저장하였습니다.
  • bw를 이용하여 결과를 한 번에 출력하였습니다.

결과 코드

import java.util.*;
import java.io.*;
import java.math.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //입력 값을 받는 BufferedReader
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        //입력 값을 출력하는 BufferedWriter
        int index = Integer.parseInt(br.readLine());		//성적 계산 반복 횟수
        String[] arr = new String[index];			//입력 열 값 저장 배열
        StringTokenizer st;
        for(int i=0;i<index;i++){
            float avg=0;					//평균값
            int stack=0;
            arr[i] = br.readLine();
            st = new StringTokenizer(arr[i]," ");
            int arrSize = Integer.parseInt(st.nextToken());	//열의 성적 개수
            int[] score = new int[arrSize];
            for(int j=0;j<score.length;j++){
                score[j] = Integer.parseInt(st.nextToken());	//성적 점수 배열에 저장
                avg +=score[j];					//평균 구하기 위해 점수들 더하기
            }
            avg = avg/arrSize;					//평균 구하기
            for(int j=0;j<arrSize;j++){				//평균보다 높은 점수 수 구하기
                if(score[j]>avg){
                    stack++;
                }
            }
            float temp = (float)stack/arrSize * 100;		//퍼센트율 구하기
            String result = String.format("%.3f", temp);	//소수 3자리 숫자까지 구하고 반올림 진행
            bw.write(result + "%\n");				//열의 결과 bw에 저장
        }
        bw.flush();						//결과 출력
        bw.close();
        br.close();
    }
}

댓글