메소드 이용 없이 직접 평균을 구할 때는 숫자들을 모두 합산한 뒤 숫자의 개수로 나누면 된다.
< 백준 1546번 평균 >
// 입력: 첫 번째 줄에 개수, 두번째 줄에 시험점수
// 출력: 시험점수의 max값을 적용한 조작된 평균
// 유의점: 오차를 최소화하기 위해 숫자를 double형으로 입력받은 후 계산해야 한다.
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num == 0)
System.out.println(num);
else{
double cur = sc.nextInt();
double sum = cur, max = cur;
for(int i=1; i<num; i++){
cur = sc.nextInt();
sum += cur;
if(cur>max)
max = cur;
}
double avg = sum/num;
double newAvg = avg/max*100;
System.out.println(newAvg);
}
}
}
< 백준 4344번 평균은 넘겠지 >
// 입력: 첫째 줄에 시험 수, 이후 각 줄마다 학생수 N, N명의 점수 이어짐
// 출력: 각 줄마다 평균을 넘는 학생의 비율. 반올림하여 소수점 셋째 자리까지.
import java.util.*;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.nextLine();
for (int i=0; i<num; i++){
String line = sc.nextLine();
String[] list = line.split(" ");
double score = 1, sum = 0, count = 0;
double snum = Double.parseDouble(list[0]);
for (int j = 1; j<=snum; j++)
sum += Double.parseDouble(list[j]);
double avg = sum/snum;
for (int k = 1; k<=snum; k++){
if(Double.parseDouble(list[k]) > avg)
count++;
}
double result = count/snum*100;
System.out.printf("%.3f%%\n", result); //String.format이나 round를 사용하는 것보다 훨씬 편리함
}
}
}
'JAVA' 카테고리의 다른 글
자바 String 공백 처리, 빈도 계산 (백준 1152, 1157) (0) | 2020.06.04 |
---|---|
백준 한수의 개수 구하기 (백준 1065 자바) (0) | 2020.05.26 |
자바 최솟값, 최댓값 구하기 (백준 배열 2562, 10818 코드) (0) | 2020.05.22 |
두 번째로 큰 수를 출력하는 간단한 프로그램 (백준 10871 자바) (0) | 2020.05.22 |
EOF(End of File)란? 자바 커맨드에서 EOF처리하기 (백준 10591 자바 코드) (0) | 2020.05.20 |