2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[백준 알고리즘 - 25206] - 너의 평점은

2023. 8. 9. 00:27ㆍ백준 알고리즘

 

 

 

 

25206번: 너의 평점은 (acmicpc.net)

 

25206번: 너의 평점은

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치

www.acmicpc.net

 

 

 

 

 

 

 

 

 

[이 문제의 포인트 ]

 

1. 총 20줄의 걸쳐서 문자열이 출력된다.

2. BufferReader와 StringTokenizer의 사용

3. split 메서드의 활용 

 

 

[해설]

이 문제의 경우 StringTokenizer와 BufferReader만 잘 사용한다면 쉽게 풀 수 있는 문제 입니다.

 

일단 문제의 경우 20줄에 걸쳐서 값들이 들어온다고 하였음으로

 

총 20번을 반복해줘야 합니다.

 

여기서 readLine()메서드를 잘알아야 하는데

이 메서드의 경우 한줄씩 읽어 들입니다.

 

 

즉 이렇게 문자열을 가지고 오게되면 한줄에 한개씩 줄을 읽게 됩니다.

 

그렇기 때문에 반복문안에서 readLine()을 써주는 것이 핵심입니다.

또한 값을 가져올 때 총 3개로 split 메서드로 나눕니다.

 

1 . 과목명

 

2.  과목평점

 

3.  학점

 

이 총 세 부분으로 나눠서 반복문을 돌리는 것이 핵심 입니다.

 

이 문제의 경우 전공평점을 구하는 방법은

 

(과목 평점 * 학점 ) / 총 학점 으로 구할 수 있습니다.

 

문제에서는 전공평점으로 구하라고 하였음으로

 

코드로 한번 확인해봅시다.

 

 

package com.algorithm;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;


public class Main {
    static double sum;
    static int Sum_credit =0;
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));


        for(int i=0; i<20;i++){ // 총 과목 20개를 반복
            //한줄씩 읽어 들이기 때문에 총 20번을 읽어야 함으로 반복문안에 써주는 것이 핵심임.
            StringTokenizer st = new StringTokenizer(br.readLine()); // BufferedReaer로 받아줌

            String sub = st.nextToken(" "); // 띄어쓰기로 문자열을 나눔.
            double credit = Double.parseDouble(st.nextToken()); // 과목 평점 
            String avg = st.nextToken();  // 학점

            avg(credit,avg);

        }
        System.out.println(sum/ Sum_credit);



    }

    private static void avg(double credit, String avg) {

        switch (avg){
            case "A+" :{
                sum = sum+ (credit*4.5);
                Sum_credit+=credit;

                break;
            }
            case "A0" : {
                sum = sum+(credit*4.0);
                Sum_credit+=credit;
                break;
            }

            case "B+" : {
                sum = sum+(credit*3.5);
                Sum_credit+=credit;

                break;
            }
            case "B0" : {
                sum = sum+(credit*3.0);
                Sum_credit+=credit;

                break;
            }
            case "C+" :{
                sum = sum+(credit*2.5);
                Sum_credit+=credit;

                break;
            }
            case "C0" : {
                sum = sum+(credit*2.0);
                Sum_credit+=credit;

                break;
            }
            case "D+" : {
                sum = sum+(credit*1.5);
                Sum_credit+=credit;

                break;
            }
            case "D0" : {
                sum = sum+(credit*1.0);
                Sum_credit+=credit;

                break;
            }
            case "F"  : {
                sum = sum+(credit*0.0);
                Sum_credit+=credit;

                break;
            }
            case "P" :{

                break;
            }


        }
    }
}