오늘은 1차원 배열의 마지막 문제인 평균은 넘겠지 문제를 가져와봤습니다.
이번 문제도 역시 수학으로 먼저 풀려고 하니까 딱 나눠지면서 이해하기 쉽더라고요... ㅎㅎ 뭔가 배열 문제만 보면 숨 턱턱 막히고 어떻게 풀어야 하나 항상 긴장 + 걱정부터 했었는데 매일 1문제라도 문제를 풀다 보니까 조금 (아주 조금..) 괜찮아진 것 같은 느낌입니다!! ㅎㅎ
바로 문제풀러 가보겠습니다.
문제는
https://www.acmicpc.net/problem/4344
여기서 확인하시면 됩니다.
문제풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int c = sc.nextInt(); // 케이스수
int[] arr;
for (int i = 0; i < c; i++) {
int n = sc.nextInt(); // 학생수
arr = new int[n];
int sum = 0;
for(int j = 0; j < n; j++) {
int point = sc.nextInt();
arr[j] = point;
sum += point;
}
double avg = (double)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);
}
}
}
이번 문제는
1. 성적의 평균을 구하고
2. 구한 평균값을 배열의 모든 값과 비교해서
3. 평균값보다 큰 수를 카운트해서
4. 카운트한 값과 사람 수를 가지고 계산을 하는 겁니다.
5. %%를 사용해서 출력할 때 %가 나오게 해 줍니다.
이렇게 쓰고 보니까 뭔가 많은데 막상 풀어보면 사실 그렇게 복잡하지는 않다고 생각합니다.
전부터 계속 연습했던 터라 이제 Scanner를 사용해서 어디에 어떤 입력값을 받는지 넣는 것은 이제 익숙해진 거 같아요
또 이번 문제는 소수점 셋째 자리까지 출력하라고 명확하게 나와있기 때문에 printf를 사용했습니다.
첨에 이클립스에서는 맞게 나오는데 (테스트 케이스를 1개만 입력해서 ㅜㅜ) 제출하니까 계속 틀리다고 나오더라고요.... 그래서 왜 그런가 봤더니 %%뒤에 \n을 써주지 않아서 케이스가 여러 개일 경우 예제 출력과 다르기 때문에 틀리다고 나온 거였습니다. 혹시 실패라고 나온다면...? 한번 꼭 확인해보세요~ ㅎㅎ
'Algorithm > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 2908 상수 - java (0) | 2021.07.23 |
---|---|
[Baekjoon] 백준 1152 단어의 개수 - java (0) | 2021.07.21 |
[Baekjoon] 백준 8958 OX퀴즈 - java (2) | 2021.07.19 |
[Baekjoon] 백준 1546 평균 - java (0) | 2021.07.18 |
[Baekjoon] 백준 10951 (A + B - 4) - java (0) | 2021.07.15 |