[Java]백준1546_평균구하기

728x90

이전글 : 2023.07.27 - [알고리즘(Java)/백준] - [Java]백준11720_숫자의 합 구하기

백준1546_평균구하기

백준1546번 문제 _ 브론즈1

step 1.         문제 분석하기 

 

 - 예제입력에서 3 -> 시험을 본 과목의 개수 / 40 80 60 -> 각 과목의 시험 성적

 - 평균구하기 (M=최대수) (입력값a+b+c)*100 / M / 3 ->평균

 

step 2.        손으로 써가면서 풀어보기

 

 

step 3.         슈도코드 작성하기   

 

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

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

  3) for문으로 A[] 길이만큼 반복하기 {

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

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

      최고점은 변수 max에 , 총점은 변수 sum에 저장하기

            - > 공식 = sum*100 / max / N

  5) 출력하기

 

final.         코드로 구현하기   

 
import java.util.Scanner;

//백준 온라인
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
      int A[] = new int[N];

       for (int i = 0; i <N ; i++) {
            A[i] = sc.nextInt(); }
        long sum = 0;
        long max = 0;

        for (int i = 0; i <N ; i++) {
            if(A[i]>max) {
                max = A[i];
                sum += A[i];
            }
           }
        System.out.println(sum*100.0/max/N);
}
}
//<<다른사람 코드>>

import java.util.Scanner;

//백준 온라인
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        long sum =0;
        long max=0;
        
        for (int i = 0; i <N ; i++) {
            int temp = sc.nextInt();
            if(temp>max) {
                max = temp;
                sum += temp;
            }
        }
        System.out.println(sum*100.0/max/N);
    }
}

결과적으로 답은 똑같으며, 그림을 그려서 풀면서 비교적 쉽게 풀리는 문제였습니다 감사합니다.

 

모든 알고리즘 풀이 과정은 책 Do it! 알고리즘 코딩테스트 with Java를 기반으로 작성하였습니다.

728x90