평균 (1546) 풀이

2023. 6. 15. 09:53BaekJoon/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