반응형
🔺 문제
🔺 코드
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로 나중에 형 변환 해도 되는구만..!
🔺 다른 풀이들
평균 넘는 학생 수 변수를 double형으로 선언하셨다.
그리고 출력할 때도 ("%.3f%%\n", (count / N ) * 100);
하셨고!
printf에서 퍼센트 출력할 때 앞에 % 하나 더 해주면 되는..
(참고)
✔ printf에서 % 출력 : %를 두번 입력하면 됨 (%%)
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 2798번: 블랙잭 (0) | 2023.04.01 |
---|---|
[백준/JAVA] 24313번: 알고리즘 수업 - 점근적 표기 1 (0) | 2023.04.01 |
[백준/JAVA] 10757번: 큰 수 A+B (0) | 2023.03.30 |
[백준/JAVA] 1157번: 단어 공부 (0) | 2023.03.30 |
[백준/JAVA] 10811번: 바구니 뒤집기 (0) | 2023.03.30 |