-
[백준/Java] 4344번 - 평균 이상 비율 구하기Problem Solving 2022. 3. 27. 23:23
또 뻘짓 했다. BufferedReader/Writer를 반복문이 끝나기 전에 끝내 버리는 위치에 넣어두고는, IO런타임에러가 계속 뜨길래 왜 그러나 한참 찾아봤다.
문제는 이렇다.
풀이는 간단하다.
반복문을 돌며 각 줄마다
1. 점수 평균을 구한 다음,
2. 평균이 넘는 점수의 수를 세서 이를 학생의 수로 나눈 결과를 출력하면 된다.
나누기 혹은 나누기 한 결과와 비교 연산 시 double로 형변환 하는 것을 잊지 말아야 한다.
import java.io.*; import java.util.StringTokenizer; 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)); StringTokenizer st; int cases = Integer.parseInt(br.readLine()); // 테스트 케이스의 수 for (int i=0;i<cases;i++) { st = new StringTokenizer(br.readLine()); // 테스트 케이스 읽기 int N = Integer.parseInt(st.nextToken()); // 학생의 수 int[] scores = new int[N]; // 점수 넣을 배열 생성 int sum = 0; // 점수 합계 구하기 위한 변수 for (int j=0;j<N;j++) { scores[j] = Integer.parseInt(st.nextToken()); // 배열에 점수 삽입 sum += scores[j]; // 평균 구하기 위한 점수 합계 } int over_avg = 0; // 평균 넘는 학생 수 세기 위한 변수 for (int j=0;j<N;j++) { if ((double)scores[j] > ((double)sum/N)) over_avg++; } double rate = ((double)over_avg/N)*100; bw.write(String.format("%.3f%%\n",rate)); // 소수점 셋째 자리까지 출력 } br.close(); bw.close(); } }
'Problem Solving' 카테고리의 다른 글
[백준/Java] 2292번 - 벌집 (0) 2022.04.03 [백준/Java] 4673번 - Self Number (0) 2022.04.03 [백준/Java] 8958번 - OX (0) 2022.03.27 [백준/Java] 1546번 - 새로운 평균 (0) 2022.03.27 [백준/Java] 3052번 - 42로 나눈 나머지 가짓수 세기 (0) 2022.03.27