문제 링크
주의사항
- 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();
}
}
'백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기(단계:6,함수,JAVA)4673번, 셀프 넘버 (0) | 2021.12.17 |
---|---|
[백준] 단계별로 풀어보기(단계:6,함수,JAVA)15596번, 정수 N개의 합 (0) | 2021.12.16 |
[백준] 단계별로 풀어보기(단계:5,1차원 배열,JAVA)8958번, OX퀴즈 (0) | 2021.12.15 |
[백준] 단계별로 풀어보기(단계:5,1차원 배열,JAVA)1546번, 평균 (0) | 2021.12.15 |
[백준] 단계별로 풀어보기(단계:5,1차원 배열,JAVA)3052번, 나머지 (0) | 2021.12.14 |
댓글