[Algorithm] 백준: 25206 너의 평점은(Java11)

m_ngyeong·2025년 3월 14일
0

Algorithm

목록 보기
8/8
post-thumbnail

25206 너의 평점은

HashMap

HashMapKey-Value(키-값) 쌍으로 데이터를 저장하는 자료이다.
Java에서 java.util.HashMap 클래스를 사용하면 쉽게 활용할 수 있다.

📌 HashMap의 주요 특징

  • Key(키)를 통해 Value(값)를 빠르게 찾을 수 있음
  • Key는 중복될 수 없고, Value는 중복 가능
  • 빠른 데이터 조회 가능 (평균적으로 O(1)의 시간 복잡도)
  • Key로 문자열, 정수 등 다양한 타입 사용 가능
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        // 1. HashMap 생성 (Key: String, Value: Integer)
        HashMap<String, Integer> map = new HashMap<>();

        // 2. 데이터 추가 (put)
        map.put("Apple", 1000);
        map.put("Banana", 500);
        map.put("Cherry", 2000);

        // 3. 데이터 조회 (get)
        System.out.println("Apple의 가격: " + map.get("Apple")); // 1000 출력

        // 4. 데이터 삭제 (remove)
        map.remove("Banana");

        // 5. 데이터 확인 (containsKey)
        if (map.containsKey("Cherry")) {
            System.out.println("체리가 있습니다!");
        }

        // 6. 모든 Key-Value 출력 (반복문)
        for (String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }
    }
}

문제:

링크: https://www.acmicpc.net/problem/25206

문제 분석:

  • 입력으로 20개의 줄이 주어지며, 각 줄에는 과목명, 학점, 등급이 주어짐
  • 학점을 기준으로 평점을 계산해야 함
  • P 등급은 계산에서 제외됨
  • 평점 기준표:

정답:

해결 방법:

  1. 입력을 20번 반복하여 학점과 등급을 받음
  2. P 등급 과목은 계산에서 제외
  3. 평점과 학점을 계산하는 공식을 사용하여 최종 평점을 구함
    GPA = ∑(학점×평점) / ∑학점
  4. 최종 결과를 출력
import java.util.Scanner;
import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        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);

        double totalScore = 0;  // (학점 * 평점) 합산
        double totalCredit = 0; // 전체 학점 합산

        for (int i = 0; i < 20; i++) {
            String subject = scan.next();  // 과목명 (사용하지 않음)
            double credit = scan.nextDouble(); // 학점
            String grade = scan.next();  // 등급

            // "P" 학점은 계산 제외
            if (grade.equals("P")) {
                continue;
            }

            // 학점 * 평점을 누적
            totalScore += credit * gradeMap.get(grade);
            totalCredit += credit;
        }

        // GPA 계산 및 출력
        double gpa = totalScore / totalCredit;
        System.out.printf("%.6f", gpa); // 소수점 6자리까지 출력
    }
}
  • System.out.printf()%.6f와 같은 형식 지정 출력(formatting)을 지원
  • System.out.print(String.format())을 사용하여 형식 지정 출력을 할 수 있음
profile
ʚȉɞ

0개의 댓글