https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
주의점
- 소수점 셋째 자리까지 출력
- 각 테스트 케이스의 첫 번째 수 : 해당 케이스의 입력 개수
- 평균을 넘는 학생 비율 : 퍼센트(%)로 출력
풀이
1. Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] arr;
int C = in.nextInt();
for(int i = 0 ; i < C ; i++) {
int N = in.nextInt(); //학생수
arr = new int[N];
double sum = 0; //성적 누적 합계 변수
for(int j = 0 ; j < N ; j++) {
int val = in.nextInt(); //성적 입력
arr[j] = val;
sum += val; //성적 누적 합계
}
double avg = (sum / N) ;
double cnt = 0; //평균 넘는 학생수 변수
//평균 넘는 학생 비율
for(int j = 0 ; j < N ; j++) {
if(arr[j] > avg) {
cnt++;
}
}
//소수점 셋째 자리까지 출력
//"%"도 함께 출력하려면 printf()에서 "%%"로 기재해야 함
System.out.printf("%.3f%%\n", (cnt / N) * 100);
}
in.close();
}
}
2. BufferedReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr;
int C = Integer.parseInt(br.readLine());
StringTokenizer st;
for(int i = 0 ; i < C ; i++) {
st = new StringTokenizer(br.readLine(), " "); // 학생수 & 성적 입력
int N = Integer.parseInt(st.nextToken()); //학생수
arr = new int[N];
double sum = 0; //성적 누적 합계 변수
for(int j = 0 ; j < N ; j++) {
int val = Integer.parseInt(st.nextToken()); //성적 입력
arr[j] = val;
sum += val; //성적 누적 합계
}
double avg = (sum / N) ;
double cnt = 0; //평균 넘는 학생수 변수
//평균 넘는 학생 비율
for(int j = 0 ; j < N ; j++) {
if(arr[j] > avg) {
cnt++;
}
}
System.out.printf("%.3f%%\n", (cnt / N) * 100);
}
}
}
성능
- BufferedReader > Scanner
1차원 배열 마무리
장점
- 메모리에 연속 연결되어 할당하기에 접근 속도 빠름 = 색인 속도 빠름
- 참조 위해 추가적인 메모리를 할당할 필요 없음
단점
- 자료 삭제 / 삽입할 때 다른 데이터들을 밀거나 당겨와야 하기에 배열의 크기가 커질수록 비효율적임
- 배열의 크기 : 불변 ➡ 메모리가 낭비되거나 데이터는 많으나 배열에 다 넣지 못할 수도 있음
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 4673번 : 셀프 넘버 - Java (0) | 2022.03.14 |
---|---|
[백준] 15596번 : 정수 N개의 합 - Java (0) | 2022.03.14 |
[백준] 8958번 : OX퀴즈 - Java (0) | 2022.03.05 |
[백준] 1546번 : 평균 - Java (0) | 2022.03.04 |
[백준] 3052번 : 나머지 - Java (0) | 2022.03.03 |
댓글