코테/백준
[백준/JAVA] 4344번: 평균은 넘겠지
imname1am
2023. 4. 1. 12:21
반응형
🔺 문제
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
🔺 코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int c = Integer.parseInt(br.readLine());
for(int i = 0 ; i < c ; i++) {
st = new StringTokenizer(br.readLine()," ");
int cnt = Integer.parseInt(st.nextToken()); // 학생 수
int[] arr = new int[cnt]; // 성적 배열
double sum = 0;
double avg = 0;
// 성적 입력
for(int j = 0 ; j < cnt ; j++) {
arr[j] = Integer.parseInt(st.nextToken());
sum += arr[j];
}
avg = sum / cnt;
int over = 0; // 평균 넘는 학생
for(int k : arr) {
if(k > avg) {
over++;
}
}
System.out.printf("%.3f", over * 100 / (double)cnt);
System.out.print("%");
System.out.println();
}
}
}
✅ 해결 아이디어
- 첫 번째 반복문 돌 때마다, 둘째 줄부터 맨 처음 받는 숫자 n 크기의 배열 생성하고 값 저장해 각 줄의 평균 계산.
- 각 줄에서 평균보다 큰 원소의 개수 저장 (변수 over)
- 평균 넘는 학생들의 비율 출력 :over / cnt * 100
하면 결과값이 0이 나와 에러가 발생하므로, 결과값이 0이 아닌 double형으로 출력되도록 순서를 바꿔over * 100 / (double)cnt;
로 작성함.
cnt를 애초에 double형으로 선언해도 되고, 만약 int로 선언해놓았다면 double로 나중에 형 변환 해도 되는구만..!
🔺 다른 풀이들
[백준] 4344번 : 평균은 넘겠지 - JAVA [자바]
https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스
st-lab.tistory.com
평균 넘는 학생 수 변수를 double형으로 선언하셨다.
그리고 출력할 때도 ("%.3f%%\n", (count / N ) * 100);
하셨고!
printf에서 퍼센트 출력할 때 앞에 % 하나 더 해주면 되는..
(참고)
✔ printf에서 % 출력 : %를 두번 입력하면 됨 (%%)
[Java] printf에서 나머지(%)연산 출력하기
이렇게 출력했더니 무수히 많은 에러가.. 나머지 연산 하려면 어떻게 해야될까? printf를 이용한 %때문에 에러가 생기는거같은데 println이나 print를 사용해야만 되는걸까? printf로는 정녕 나머지 연
velog.io
반응형