백준 [1546] (Java)

2023. 4. 27. 22:25카테고리 없음

 

 

 

 

첫번째방법 (배열 선언x)

 

의사코드:

1.과목의 갯수를 입력받고, 그수만큼 점수를 입력받는다.

2. 입력받은 값중최댓값을 계산

 max=0 으로 두고 if  score가 max (초기=0)보다 커지면,  입력받는값중에 계속해서 맥스값이됨,

 

 

입력받은 수중에 최댓값찾는방법:

 

max가 0 일때,  첫번째입력받은 스코어가 크기때문에 max가 되고,   첫번째 입력받은 max가 40 으로되면, 다시 새로운 score 값60과 비교,  다시 max값이 변경됨, 이런식으로 max값을 찾아내고 맥스값을 찾는다 

 

 

3.  맥스값을 찾았으면 과목의 갯수만큼 0으로 선언된 sum 변수에 첫번째부터 입력받는 score 를 누적해서 더한다.

 

-> 0+ 40 + 80 +60      =  180

 

결과용 변수를 선언하고,( cheatedScore) =  더한값/최댓값*100/과목의 갯수   하면 됨

 

 

1.배열을 선언하지않고푸는방법

 

package 백준1546;


import java.util.Scanner;
public class Practice {

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

int n;  //입력받을 과목의 갯수
n= sc.nextInt();                    //과목 입력
double max=  0;  // 최댓값
double sum = 0;  //과목 합산값
double score;


for( int i =0 ; i <n; i++){             //과목의 갯수만큼 입력받음

    score=sc.nextDouble();


    if(max<score)   max=score;     //입력받은 값중 최댓값 찾기=>max를 0으로 두고, score들이 반복해서 max를 기반으로 비교함

        sum+=score;                 //sum에 score 를 반복해서 더하기( if문밖에적어줘야함)=> if문이랑 상관 x

    }




        double cheatedScore= (sum/max*100)/n;
        System.out.println(cheatedScore);             //사기친점수를 평균으로냄
        sc.close();

    }



}

 

 

2.배열을 선언하고 푸는방법

 

 

의사코드: 

1.과목의 갯수n 선언후 입력받기

2.입력받은 점수중 최댓값을 배열을 이용해 찾아낸다.

 

1)입력받은 갯수n만큼의 배열선언 

2) 배열의 갯수만큼 배열에 입력을 받는다,

3) 만약 입력받는 score가 max 보다 커지면 해당 score 는 max값

4)  반복문안에 sum 값을 배열의 인덱스마다  더하는 합산 식 sum+= array[i] 넣어줌 => 합산계산

 

 

이미만들어진 식 sum을 n 개의 값(배열의길이) 로 나눠서 결과출력


import java.util.Scanner;
public class Practice2 {


    public static void main(String[] args) {

    Scanner sc= new Scanner(System.in);


    int n= sc.nextInt();
    double max=0;
    double cheatedScore=0;
    double array[] = new double[n];         //n개의 갯수만큼 배열선언
    double score=0;
    double sum=0;
    for(int i = 0;  i<array.length;i++){

        array[i] = sc.nextDouble();

    if(max<array[i]){max=array[i]; }        //배열의 인덱스가 max 값보다커지면,max값 갱신  
                                            //(입력받게되는 스코어가)

        sum+=array[i];              //반복해서 sum에 배열의 길이만큼 더함


            }


        cheatedScore=  (sum/max*100)/n;//    나누기n 또는 배열의 길이만큼, 하던 상관x
       //cheatedScore=  (sum/max*100)/array[i]  (o)

        System.out.println(cheatedScore);




    }





}