본문 바로가기
Baekjoon 자바 코드/1차원 배열

[백준] 1546번 평균 풀이 코드 (Java 자바)

by 망댕이 2024. 8. 6.
반응형

 

이 문제는 내 생각에서 브론즈 1 정도 난이도를 가지고 있는 문제라고 생각하지 않았다.

또한 1차원 배열 파트에 굳이 넣었어야 하는 문제인가 생각이 들기도 하였다.

접근 방법)

우선 처음으로 배열을 제외하고 푸는 방법으로는 for문을 이용하여 시험 본 과목 개수 N번만큼 반복 실행을 한다.

그 for문 안에서 모든 시험 과목 점수들을 더하는 코드와 최댓값을 찾는 코드를 넣어준다.

그리고 마지막으로 문제에서 주어진대로 과목 점수의 총 합/ 최댓값 *100 / 과목수로 계산하여 평균을 구해준다.

참고로 주의해야할 점이 있다. 출력 값이 정수가 아닌 소수점까지 나타내는 값이라 int가 아닌 double이나 float를 사용해야 한다.

 

배열을 이용하여 푸는 방법은 배열 안에 과목 점수들을 집어넣은 후에 위와 같은 방법을 이용하여 구하는 것이다.

그래서 굳이 배열을 이용해서 풀어야 하나 싶은 생각이다.

 

▷ For문안에서 점수 총 합과 최댓값 구하기

for문을 이용하여 주어진 점수들의 총 합과 그 중 최댓값을 구하여 출력 값을 구해낼 수 있다.

int max = 0; // 정수
float sum = 0; // 실수

for(int i = 0; i < n; i++){
    int score = sc.nextInt();
    sum = score + sum; // 총 합
    if(score > max){
        max = score; // 최댓값
    }
}

 

정답 코드 1)

import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int max = 0; // 정수
        float sum = 0; // 실수

        for(int i = 0; i < n; i++){
            int score = sc.nextInt();
            sum = score + sum; // 점수들의 총 합 구하기
            if(score > max){
                max = score; // 최댓값 구하기
            }
        }
        System.out.print(((sum/max)*100)/n); // 실수에서 정수를 나누고 곱하는 것이기 때문에 출력 값은 실수로 나온다.
    }
}

 

정답 코드 2)

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        int[] arr = new int[n];
        int max = 0; // 배열 중 최댓값
        double sum = 0; // 배열 숫자 총 합
        double fix_num = 0; // 고친 숫자들로 출력할 값
        for(int i = 0; i < n; i++){
            int m = s.nextInt();
            arr[i] = m;
            if(arr[i] >= max){
                max = arr[i];
            }
        }
        for(int j = 0; j < n; j++){
            sum = sum + arr[j];
        }
        fix_num = (sum/max*100)/n;
        System.out.print(fix_num);
    }
}

 

이렇게 배열을 사용하면 더 코드가 복잡해지고 길어지게 된다.

 

반응형