[코딩테스트] 백준 1546 자바

Henson·2025년 5월 14일

코딩테스트

목록 보기
2/50
post-thumbnail

백준 1546

백준 1546 문제

import java.util.*;

public class Boj1546 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int scoreCount = sc.nextInt(); // 과목 수
        long max = 0; // 최대 점수
        long sum = 0; // 점수의 합

        for (int i = 0; i < scoreCount; i++) {
            int temp = sc.nextInt(); // 입력되는 점수
            if (temp > max) {
                max = temp; // 입력되는 점수를 비교하여 크면 최대 점수 변경
            }
            sum += temp; // 모든 점수를 sum 변수에 더하기
        }

        /**
         * 모든 점수를 최대 점수로 나누고, 100을 곱한 다음 평균을 구하는 식은
         * (전체 점수의 합) × 100 ÷ 최대점수 ÷ 과목 수
         * 위와 같이 변경할 수 있다.
         */
        System.out.println(sum * 100.0 / max / scoreCount);
    }
}

풀이

  1. 해당 문제는 모든 점수를 최대 점수로 나누고 100을 곱한 다음에 평균을 구하는 문제이다.
  2. 위의 평균을 구하는 식은 (전체 점수의 합) × 100 ÷ 최대점수 ÷ 과목 수로 바꿀 수 있다.
  3. 과목 수를 입력 받는다.
  4. 과목 수만큼 반복문을 돌면서 각 점수를 입력 받으면서 sum 변수에 점수를 더해주고, 입력 받은 점수와 현재의 최대 점수를 비교하며 최대 점수를 갱신한다.
  5. 위의 식에 각 값들을 대입하여 출력해주면 되는데, 이 때 정수형으로 출력하면 소수자리가 짤리기 때문에 100.0 곱하여 double형으로 출력되게 한다.
profile
세계 최고의 개발자가 되고 말겠어.

0개의 댓글