반응형
https://www.acmicpc.net/problem/4344
문제 해설
문제에 있는 예제를 쉽게 풀어 설명하자면
학교에 C개의 반이 있을 때 각각의 반마다 N명의 학생 수 가 존재한다.
N명의 학생의 평균 점수를 구해서 N명중의 몇명이 평균을 넘는지 구해서 비율로 나타낸다.
해결 방법
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int caseCount = Integer.parseInt(br.readLine()); // 테스트 케이스 갯수 입력
Double[] result = new Double[caseCount]; // 테스트 케이스의 결과를 담을 배열
for(int i = 0 ; i < caseCount ; i++) { // 테스트 케이스의 갯수만큼 반복
StringTokenizer st = new StringTokenizer(br.readLine()," "); // 입력받은 테스트케이스 자르기
int stdCount = Integer.parseInt(st.nextToken()); // 첫번째 숫자(학생수)
int[] score = new int[stdCount]; // 학생수로 점수 배열 생성
int sum = 0;
for(int j = 0 ; j < stdCount ; j++) {
score[j] = Integer.parseInt(st.nextToken()); // 입력 받은 점수 score 배열에 담기
sum += score[j]; // 평균을 구하기 위한 sum
}
int overCount = 0; // 평균 넘는 학생 수 선언
double avg = (double)sum/(double)stdCount; // 평균
for(int z = 0 ; z < score.length ; z++) { // score 배열을 돌면서 평균 이상인 학생 수를 구한다.
if(score[z] > avg) {
overCount++;
}
}
result[i] = (double)overCount/(double)stdCount; // 테스트 케이스 결과 값을 result에 저장
}
for(int i = 0 ; i < result.length ; i++) {
bw.write(String.format("%.3f%%\n", result[i]*100)); // 출력
}
br.close();
bw.flush();
bw.close();
}
}
1. String.format()을 사용할 때 특수문자 % 사용시 %% 두번 쓰면 됩니다.
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 알고리즘][자바] 10890번 : 알파벳 찾기 (0) | 2021.03.10 |
---|---|
[백준 알고리즘][자바] 11720번 : 숫자의 합 (0) | 2021.03.05 |
[백준 알고리즘][자바] 1546번 : 평균 (0) | 2021.03.04 |
[백준 알고리즘][자바] 2562번 : 최댓값 (0) | 2021.03.02 |
[백준 알고리즘][자바] 10818번 : 최소, 최대 (0) | 2021.01.19 |
댓글