분류: 1차원배열
Q : 첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
입력 | 출력 |
5 5 50 50 70 80 100 7 100 95 90 80 70 60 50 3 70 90 80 3 70 90 81 9 100 99 98 97 96 95 94 93 91 |
40.000% 33.333% 66.667% 55.556% |
//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class p4344 {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try {
int c = Integer.parseInt(br.readLine());
String[] cases = new String[c]; //케이스 한 줄 한 줄
for(int i=0; i<c; i++) {
cases[i] = br.readLine();
String[] temp = cases[i].split(" "); //잘라서 배열에 잠시 넣어놓고 숫자로 바꿔 계산
double sum = 0;
double number = Double.parseDouble(temp[0]);
for(int j=1; j<number+1; j++) { //첫번째는 과목 수 이기 때문에 과목수+1해야 케이스 전체 배열 크기임.
sum += Double.parseDouble(temp[j]);
}
double average = sum/number;
//평균 넘는 학생들 비율 구하기. 소숫점 3째 자리까지
int count = 0;
for(int j=1; j<number+1; j++) {
if(Integer.parseInt(temp[j])>average) count+=1;
}
bw.write(String.format("%.3f", (count/number*100))+"%\n");
bw.flush();
}
}catch (Exception e) { System.out.println(e); }
}
}
▶무조건 소숫점 아래 3째 자리까지 표현하기
String.foramt("%.3f", average)
-> 숫자 40.0도 문자열 40.000으로 리턴됨.
▶반올림을 해서 소숫점 표현하고 싶다면 Math.round() 를 이용한다.
Math.round(3.14) -> 3
소숫점 아래 3번쩨 에서 반올림 하고 싶으면, 먼저 100을 곱한 수를 반올림 시키고 다시 100으로 나눠준다.
Math.round(3.141592*100)/100 -> 314.159 > 314 > 3.14
->하지만, String.foramt()과는 다르게 40.0이 40.00으로 나오지 않는다.
//문자열이 아니라 숫자를 리턴하니까 그렇게 나오는 거겠지..?
마지막으로 궁금한게 있다.
현재 spring으로 백준알고리즘 문제를 푸는데
자꾸 배열의 마지막 부분을 연산한 결과가 콘솔에 나타나지 않는다...
백준에 제출하면 맞는데ㅠ
이것땜에 자꾸 시간을 낭비한다 뭐가 틀렸나 찾느라고
왜 그런거지.....
채점결과
링크 www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
'백준알고리즘' 카테고리의 다른 글
백준알고리즘:p10809 알파벳 찾기 (0) | 2021.02.23 |
---|---|
백준알고리즘:p11720 문자열 숫자의 합 (0) | 2021.02.23 |
백준알고리즘:p11654 문자열, 아스키코드 (0) | 2021.02.23 |
백준알고리즘: p4673 셀프넘버 (0) | 2021.02.21 |
백준알고리즘:p8958 "OOXXOXXOOO" (0) | 2021.02.20 |
댓글