공유 소스 보기
www.acmicpc.net
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
내가 작성한 코드
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각하는데
//그들에게 슬픈 진실을 이야기해주어야하는데 굳이..?
//개수 c 주어짐
int c = sc.nextInt();
//각 케이스마다 학생의 수인 n과
int n, sum, count;
//그 다음 n의 점수 주어짐
int[] arr = new int[1001];
//각 케이스마다 한 줄 씩 평균이 넘는 학생의 비율 반올림하여 소숫점 셋째 자리 출력
for(int i = 0; i < c; i++){ //테스트 케이스 개수
n = sc.nextInt(); //학생 수
//초기화
sum = 0;
count = 0;
for(int j = 1; j <= n; j++){ //학생 수만큼
arr[j] = sc.nextInt(); //점수 입력해서 배열 저장
sum += arr[j]; //sum 배열값 더함
}
double avg = (double)sum / n; //평균값
//평균값 넘는 사람들
for(int j = 1; j <= n; j++){
if(arr[j] > avg){
count += 1;
}
}
System.out.printf("%.3f", 100.0 * count / n);
System.out.println("%");
}
sc.close();
}
}
비교
import java.util.Scanner;
// casting의 개념 복습 time
public class Main{
static int v[] = new int [1001];
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t-- > 0){
int all = sc.nextInt();
int n = all, sum = 0;
while(n-- > 0){
v[n] = sc.nextInt();
sum += v[n];
}//전체 학생의 총합을 구하고,
double avg = (double) sum / all; //평균값을 구함
int ans = 0;
n = all;
while (n-- > 0){
if(v[n] > avg) ans++; //평균보다 높은 학생은 몇 명?
}
//평균보다 높은 학생은 %을 출력시킴
System.out.format("%.3f%c\n", (double) ans * 100 / all, '%');
}
}
}
'Coding Test > 백준' 카테고리의 다른 글
백준 2920. 음계 (0) | 2021.03.11 |
---|---|
백준 4153. 직각삼각형 (0) | 2021.03.11 |
백준 4673. 셀프 넘버 (0) | 2021.03.11 |
백준 5543. 상근날드 (0) | 2021.03.11 |
백준 6064. 카잉 달력 (0) | 2021.03.11 |