자바 코딩테스트 강좌, 평균 구하기

안녕하세요! 이번 강좌에서는 자바로 평균을 구하는 알고리즘 문제를 다뤄 보겠습니다. 평균을 구하는 것은 프로그래밍 언어를 막론하고 기본적인 연산 중 하나이며, 코딩 테스트에서도 자주 출제되는 주제입니다. 평균 구하기 문제는 단순히 입력값을 어떻게 처리하느냐에 따라서 알고리즘의 복잡성이 달라질 수 있습니다. 따라서 기초부터 차근차근 배워 나가겠습니다.

문제: 평균 구하기

주어진 정수 배열에 대한 평균을 구하는 프로그램을 작성하세요. 단, 배열의 길이는 1 이상 100 이하의 범위여야 하며, 배열의 원소는 모두 정수로 이루어져 있습니다. 또한, 평균은 소수점 둘째 자리에서 반올림하여 출력해야 합니다.

입력:

  • 정수 N (1 ≤ N ≤ 100): 배열의 길이
  • 정수 배열 A[0..N-1] (각 요소는 -1000 ≤ A[i] ≤ 1000): 배열의 각 원소

출력:

  • 평균을 소수점 둘째 자리까지 반올림하여 출력하세요.

문제 풀이 과정

문제를 해결하기 위해서 다음과 같은 단계로 진행해 보겠습니다:

  1. 입력값을 받고 배열을 생성합니다.
  2. 배열의 모든 원소를 더합니다.
  3. 배열의 원소 개수로 총합을 나누어 평균을 계산합니다.
  4. 평균을 소수점 둘째 자리까지 반올림하여 출력합니다.

1단계: 입력값 받기

문제를 풀기 위한 첫 단계는 사용자로부터 입력을 받는 것입니다. 자바에서는 Scanner 클래스를 사용하여 입력을 받을 수 있습니다. 사용자가 입력한 배열의 길이와 배열의 원소를 차례대로 읽어와야 합니다.


import java.util.Scanner;

public class AverageCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("배열의 길이를 입력하세요: ");
        int N = scanner.nextInt();
        int[] A = new int[N];
        
        System.out.println("배열의 원소를 입력하세요:");
        for (int i = 0; i < N; i++) {
            A[i] = scanner.nextInt();
        }
        
        // 다음 단계로 넘어갑니다.
    }
}

2단계: 배열의 모든 원소 더하기

두 번째 단계에서는 배열의 모든 원소를 더합니다. 이를 위해 총합을 저장할 변수를 하나 선언하여 0으로 초기화한 후, 반복문을 통해 배열의 원소를 하나씩 더합니다.


        int sum = 0;
        for (int i = 0; i < N; i++) {
            sum += A[i];
        }
        
        // 다음 단계로 넘어갑니다.

3단계: 평균 계산하기

이제 총합을 구했으니, 평균을 계산할 차례입니다. 평균은 총합을 배열의 길이로 나누어 계산할 수 있습니다. 평균 값을 저장할 변수를 선언해 주세요.


        double average = (double) sum / N;  // 정수 나누기로 인해 cast 연산 필요

4단계: 평균 반올림하여 출력하기

마지막 단계에서는 평균을 소수점 둘째 자리까지 반올림하여 출력해야 합니다. 자바에서는 Math.round 메서드를 사용하여 반올림할 수 있습니다. 반올림 후에 적절한 형식으로 출력하면 됩니다.


        average = Math.round(average * 100.0) / 100.0; // 소수점 둘째 자리까지 반올림
        System.out.printf("평균: %.2f\n", average);  // 소수점 둘째 자리까지 출력
    }
}

전체 코드

위 단계를 모두 합치면, 최종적으로 작성된 프로그램은 다음과 같습니다:


import java.util.Scanner;

public class AverageCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 1단계: 입력값 받기
        System.out.print("배열의 길이를 입력하세요: ");
        int N = scanner.nextInt();
        int[] A = new int[N];

        System.out.println("배열의 원소를 입력하세요:");
        for (int i = 0; i < N; i++) {
            A[i] = scanner.nextInt();
        }
        
        // 2단계: 배열의 모든 원소 더하기
        int sum = 0;
        for (int i = 0; i < N; i++) {
            sum += A[i];
        }

        // 3단계: 평균 계산하기
        double average = (double) sum / N;  // 정수 나누기로 인해 cast 연산 필요

        // 4단계: 평균 반올림하여 출력하기
        average = Math.round(average * 100.0) / 100.0; // 소수점 둘째 자리까지 반올림
        System.out.printf("평균: %.2f\n", average);  // 소수점 둘째 자리까지 출력
    }
}

결론

이번 강좌에서는 자바를 사용하여 평균을 구하는 간단한 알고리즘 문제를 풀어보았습니다. 평균을 구하는 문제는 기초적인 개념이지만, 다양한 변형 문제를 통해 더 깊이 있는 이해가 필요합니다. 입력 데이터의 범위나 예외 처리 등을 고려해야 할 경우도 많습니다. 향후에는 이러한 추가 요소들도 함께 다루어 보겠습니다.

코딩 테스트의 기본기를 다지기 위해 반복연습을 통해 다양한 문제를 풀어보시는 것을 추천드립니다. 감사합니다!