728x90
https://www.acmicpc.net/problem/4344
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
풀이
학생 수와 각 학생들의 점수를 입력받으면, 평균보다 높은 학생의 비율을 출력하는 문제이다.
여기서 주의할 점이 하나 있는데, 비율을 출력할 때 소수점 셋째 자리까지 반올림하여 출력해야 한다는 것이다.
이 조건은 String.format() 메서드를 이용하면 해결할 수 있다. 코드는 아래와 같다. (ratio : 비율)
String.format("%.3f", ratio)
%. 3f이 소수점 셋째 자리까지 반올림해 준다.
나머지 과정은 크게 어렵지 않았다.
배열에 학생들의 점수를 입력받고, 평균을 구한 뒤 평균보다 높은 학생들의 수를 구해서 비율을 구하면 된다.
코드
BufferedReader 클래스와 StringBuilder 클래스를 이용한 코드
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));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int C = Integer.parseInt(br.readLine());
for(int i = 0; i < C; i++) {
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int[] score = new int[N];
double sum = 0;
for(int j = 0; j < N; j++) {
score[j] = Integer.parseInt(st.nextToken());
sum += score[j];
}
double average = sum / N;
double count = 0;
for(int k = 0; k < N; k++) {
if(score[k] > average) count++;
}
double ratio = count / N * 100;
sb.append(String.format("%.3f", ratio)).append("%\n");
}
System.out.println(sb);
}
}
틀린 부분이 있다면 정정해 주시면 감사하겠습니다.
궁금한 부분이 있거나, 다른 아이디어가 있으시면 자유롭게 댓글 남겨주세요!
728x90
'[JAVA]백준 알고리즘 > 기타' 카테고리의 다른 글
[JAVA]백준 알고리즘 4673번 : 셀프 넘버 (2) | 2023.01.10 |
---|---|
[JAVA]백준 알고리즘 15596번 : 정수 N개의 합 (2) | 2023.01.08 |
[JAVA]백준 알고리즘 8958번 : OX퀴즈 (0) | 2023.01.07 |
[JAVA]백준 알고리즘 1110번 : 더하기 사이클 (0) | 2023.01.05 |
[JAVA]백준 알고리즘 25083번 : 새싹 (0) | 2022.12.30 |