본문 바로가기
백준

[백준] 2754번 : 학점계산 – JAVA [자바]

by Hongwoo 2022. 8. 7.
반응형

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

 

2754번: 학점계산

어떤 사람의 C언어 성적이 주어졌을 때, 평점은 몇 점인지 출력하는 프로그램을 작성하시오. A+: 4.3, A0: 4.0, A-: 3.7 B+: 3.3, B0: 3.0, B-: 2.7 C+: 2.3, C0: 2.0, C-: 1.7 D+: 1.3, D0: 1.0, D-: 0.7 F: 0.0

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2754번 학점계산은 브론즈 5 난이도의 구현 및 문자열 문제이다. 이 문제에서는 입력으로 성적이 주어지고 그 성적의 평점을 출력하면 된다.

 

이 문제를 보면 패턴을 찾을 수 있다. 바로 A0, B0, C0, D0은 각각 4.0, 3.0, 2.0, 1.0점이고 +들은 이 평점에서 0.3을 더한 값이다. 그리고 -들은 이 평점에서 0.3을 뺀 값이다. 따라서, 이 13가지들을 모두 if문으로 입력받지 말고 A인지, B인지, C인지, D인지만 if문으로 구별을 한다. 그리고 +인지 -인지 구분하고 0.3을 더할지 뺄지를 결정하면 된다. 만약에 F면 그대로 0.0을 출력한다.

 

이렇게 하면 코드를 훨씬 더 짧고 간결하게 쓸 수 있다.

 

자세한 코드는 밑에 있다.

 


  • 코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        double grade = 0;  //학점
        char c = s.charAt(0);
        if (c == 'A') {
            grade = 4;
        } else if (c == 'B') {
            grade = 3;
        } else if (c == 'C') {
            grade = 2;
        } else if (c == 'D') {
            grade = 1;
        } else {
            System.out.print("0.0");
            return;
        }
        c = s.charAt(1);
        if (c == '+') {
            grade += 0.3;
        } else if (c == '-') {
            grade -= 0.3;
        }
        System.out.print(grade);
    }
}

 

 

반응형

댓글