[백준 Java]_너의 평점은 (25206)

NANO·2026년 3월 16일

[Algorithm]

목록 보기
3/10
post-thumbnail

문제 정보


문제 요약

전공평점: 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값 출력
(정답과의 절대오차 또는 상대오차가 10^(-4) 이하이면 정답으로 인정


풀이 접근

  1. 과목명, 학점, 등급을 한 줄씩 입력받음
  2. 등급이 P(Pass)인 과목은 평점 계산에서 제외
  3. 나머지 과목은 학점 합산 + 학점 × 과목평점 누적
  4. 마지막에 누적값 / 학점 합계 출력

핵심 아이디어

  • 등급 → 평점 변환을 HashMap으로 처리해 조건문 없이 O(1) 조회
  • P 등급 예외 처리만 하면 나머지는 단순 누적 연산
  • printf("%f")로 부동소수점 출력 (기본 소수점 6자리, 오차 범위 충분히 만족)

코드

// 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값
import java.util.HashMap;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum_credit = 0;
        double mult = 0.0;

        HashMap<String, Double> gradeMap = new HashMap<>();
        gradeMap.put("A+", 4.5);
        gradeMap.put("A0", 4.0);
        gradeMap.put("B+", 3.5);
        gradeMap.put("B0", 3.0);
        gradeMap.put("C+", 2.5);
        gradeMap.put("C0", 2.0);
        gradeMap.put("D+", 1.5);
        gradeMap.put("D0", 1.0);
        gradeMap.put("F",  0.0);

        while (sc.hasNext()) {

            String name   = sc.next();
            double credit = sc.nextDouble();
            String grade  = sc.next();

            if (!grade.equals("P")) {
                sum_credit += credit;
                mult += credit * gradeMap.get(grade);
            }
        }

        System.out.printf("%f", mult / (double) sum_credit);

    }
}

배운 점 / 회고

profile
즐거운 토마토

0개의 댓글