본문 바로가기
카테고리 없음

[1546] 백준 JAVA: 평균

by Mr Baek 2023. 12. 5.

문제링크

https://www.acmicpc.net/problem/1546

 

 

 

시간 제한/ 메모리 제한

2  128MB

 

 

문제

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.

예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.

 

출력

첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다.

 

 

예제 입력

3
40 80 60

예제 출력

75.0

예제 입력

 

3
10 20 30

예제 출력

66.666667

문제 파악

3개를 받아 40 80 60의 점수가 입력되었다.

80이 가장 크기때문에 =M이되고, 40/80 한후 x100을한다. = 50이된다.

80/80 x 100 = 100, 60/80 x 100 =75 

50 + 100 + 75 =  225 / 3 = 75점이 답이된다.

 

간단하게 하기

-(A +B+ C)*100 / M /3 

 (40+80+60)*100 / 80 /3

= 180 *100 / 80 /3

= 18000/240 

 

소숫점이 있기때문에 더블형으로 바꿔준다.

정리

변수 N에 과목의 수 입력받기

길이가 N인 1차원 배열 A[] 선언하기

for(A[] 길이만큼 반복하기){

A[i]에 각 점수 저장하기

}

for(A[] 길이만큼 반복하기{

최고점은 변수 MAX에 , 총점은 변수 SUM에 저장하기

}

sum *100 / max/ N 출력하기

내가 작성한 코드

 

...

출력

 

...

 

 

풀이코드

package sec02.chap02;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
       Scanner sc= new Scanner(System.in);
       int a = sc.nextInt();   //과목수를 입력받는다.
       int[] b= new int[a];    //주어진 과목수만큼 과목점수를 입력받는다
       int max= 0; 
       int sum = 0;

        for (int i = 0; i < a; i++) {   //주어진 과목수만큼 과목점수를 입력할 수 있게한다.
            b[i] = sc.nextInt();
        }

        for (int i = 0; i < a; i++) {   
            if (max < b[i]) {           //주어진 과목점수중 최댓값을 찾는다.
                max = b[i];
            }
            sum += b[i];            //과목점수를 sum에 다 더한다.
            }
        System.out.println(sum*100.0/max/a);   //sum과 100을 곱하고 최댓값과 과목갯수로 나눈다. 
                                                //100.0으로 입력함으로써 더블값으로 변경된다. 
        }
    }

 

회고

그전에 푼 문제들을 풀고 풀어서 그런지 겹치는 내용도 많아 금방금방 생각이 났다.

문제를 읽을때 잘 읽는게 중요한거같다. 그전에 아스키코드로 바꾸는 생각과 double로 소숫점 생각하기!!!