코딩테스트
[BOJ_4344/JAVA] 평균은 넘겠지
Eun
2021. 12. 15. 18:26
https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
문제
풀이
이번 문제는 굉장히 쉬웠다. 정답비율이 왜 저렇게 나왔는지 모를정도...
1. BufferedReader로 한줄을 다 입력받고
2. StringTokenizer로 공백을 기준으로 다 쪼개주었다.
3. 학생 수만큼 배열에 값 넣어주고
4. for문 돌면서 평균구해주기
5. for문 돌면서 평균보다 큰 점수 있으면 count++
6. 큰 점수의 비율을 구해서 출력!
이번에 핵심은 소수점 셋째 자리까지 구하는 것인 것 같다.
String.format("%.3f", avg);
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ4344 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(br.readLine());
for(int i=0;i<num;i++) {
st = new StringTokenizer(br.readLine());
int index=0;
double student = Double.parseDouble(st.nextToken());
double [] score = new double[(int) student];
while(st.hasMoreTokens()) {
score[index]=Integer.parseInt(st.nextToken());
index++;
}
int sum=0;
double avg=0;
for(int j=0;j<student;j++) {
sum+=score[j];
}
avg=sum/student;
double count=0;
for(int k=0;k<student;k++) {
if(avg<score[k]) {
count++;
}
}
double result=count/student*100;
sb.append(String.format("%.3f", result)).append("%\n");
}
System.out.println(sb);
}
}