Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정렬
- Spring Boot
- 토이프로젝트
- sort
- 라우터
- EC2
- react
- 알고리즘
- 스터디
- ELB
- 동적프로그래밍
- 탐욕법
- EventListener
- java
- 브루트포스
- Algorithm
- 리액트
- 다익스트라 알고리즘
- 완전탐색
- spring
- mysql
- url parsing
- 백준
- AWS
- Router
- 자료구조
- nodejs
- 백준알고리즘
- BFS
- 서버구축
Archives
- Today
- Total
공부하는 블로그
Baekjoon | Q.4344 - 평균은 넘겠지 본문
평균이 넘는 학생의 비율을 구하는 문제이다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int testcase = sc.nextInt(); // 테스트 케이스 입력
for (int i = 0; i < testcase; i++) { // 테스트 케이스만큼 반복
int[] score = new int[sc.nextInt()]; // 학생 수 입력
int sum = 0;
double avg = 0;
// 학생들의 점수를 배열에 저장하고 평균을 구하기 위해 총합을 구함
for (int j = 0; j < score.length; j++) {
score[j] = sc.nextInt();
sum += score[j];
}
avg = sum / score.length; // 평균
// 평균이 넘은 학생 수를 구함
int overAvg = 0;
for (int j = 0; j < score.length; j++) {
if(score[j] > avg) {
overAvg++;
}
}
// 평균이 넘는 학생 수의 비율을 구함.
float rate = (float) (Math.round(overAvg / (float)score.length * 100 * 1000) / 1000.000);
System.out.println(String.format("%.3f", rate) + "%");
}
}
}
모든 값을 구한 후 비율값을 계산하는데 어려움이 있었다. 자꾸 값이 0이 출력되었다.. 검색 결과 float로 형변환 해주지 않으면 나눈 결과값이 제대로 나오지 않음을 찾았다.
Math.round()은 반올림 자릿수가 소수점 첫째자리로 고정되어 반올림 자릿수를 지정할 수 없다. 따라서 결과값에서 1000을 곱한 후 반올림 하여 1000을 다시 나눠주었다.
String.format()을 사용하지 않는다면 40.000%의 경우 40.0%로 첫째 자리까지만 나타나 format()을 사용했다.
'알고리즘 공부' 카테고리의 다른 글
Baekjoon | Q.1065 - 한수 (0) | 2019.12.22 |
---|---|
Baekjoon | Q.15596 - 정수 N개의 합 (0) | 2019.12.22 |
Baekjoon | Q.2577 - 숫자의 개수 (0) | 2019.12.20 |
Baekjoon | Q.10951 - A + B 4 (0) | 2019.12.19 |
Baekjoon | Q.1110 - 더하기 사이클 (0) | 2019.12.19 |
Comments