평균 (1546) 풀이
2023. 6. 15. 09:53ㆍBaekJoon/1차원 배열
문제내용
사용자에게 과목의 개수 N, 과목 점수 리스트를 입력받아 최댓값 M을 구해 모든 과목에 점수/M*100을 해 점수를 계산하고 평균을 구해 출력하는 문제이다.
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double[] arr = new double[n];
double max = 0;
for(int i = 0; i < n; i++){
arr[i] = sc.nextInt();
if(arr[i] > max){
max = arr[i];
}
}
double avg = 0;
for(int i = 0; i < n; i++){
avg += (arr[i]/max)*100;
}
System.out.println(avg/n);
}
}
사용자에게 정수를 입력받기 위해 Scanner를 사용해 n,arr를 입력받았다.
첫번째 for문에서 최댓값을 구하기 위해 과목의 개수 n번만큼 반복시켜 입력받은 과목점수가 max보다 크게된다면 갱신하여 최댓값을 구했다.
두번째 for문에서는 점수/최댓값*100을 적용시켜 avg에 더했다.
마지막으로 avg에서 과목의 개수 n을 나눠 평균을 출력시켰다.
겪었던 문제
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
double[] arr = new double[n];
double max = 0;
for(int i = 0; i < n; i++){
arr[i] = sc.nextInt();
if(arr[i] > max){
max = arr[i];
}
}
int avg = 0;
for(int i = 0; i < n; i++){
avg += (arr[i]/max)*100;
}
System.out.println(avg/n);
}
}
풀이의 코드와 거의 동일하지만 avg의 자료형이 int임을 확인할 수 있다. 예시 출력에서는 75.25처럼 소수의 출력을 원하고 있는데 정수형 자료형으로 선언해 문제를 틀렸다.
풀기 전에 꼭 문제와 예시를 확인하자...🤣
'BaekJoon > 1차원 배열' 카테고리의 다른 글
바구니 뒤집기 (10811) 풀이 (0) | 2023.06.15 |
---|---|
나머지 (3052) 풀이 (0) | 2023.06.14 |
과제 안 내신 분..? (5597) 풀이 (0) | 2023.06.14 |
공 바꾸기 (10813) 풀이 (0) | 2023.06.14 |
공 넣기 (10810) 풀이 (0) | 2023.06.14 |