EunJng

[BOJ] 25206 너의 평점은 | Java 본문

PROBLEM/BAEKJOON

[BOJ] 25206 너의 평점은 | Java

Eunjng 2023. 5. 10. 17:11

문제

백준 25206번 너의 평점은 | 실버5

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

 

25206번: 너의 평점은

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

www.acmicpc.net

  • 알고리즘 분류 : 수학 | 구현 | 문자열

 

 

 

풀이 과정

자바 풀이

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

public class Main {

	public static void main(String[] args) throws IOException{
		double sum = 0;
		double sumGrade = 0;
        
		HashMap<String, Double> scores = new HashMap<String, Double>();
		scores.put("A+", 4.5);
		scores.put("A0", 4.0);
		scores.put("B+", 3.5);
		scores.put("B0", 3.0);
		scores.put("C+", 2.5);
		scores.put("C0", 2.0);
		scores.put("D+", 1.5);
		scores.put("D0", 1.0);
		scores.put("F", 0.0);
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		for (int i=0; i<20; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			String name = st.nextToken();
			double num = Double.parseDouble(st.nextToken());
			String score = st.nextToken();

			if(score.equals("P")) {
				continue;
			}
			sum += (num * scores.get(score));
			sumGrade += num; 			
		}
		double avg = sum / sumGrade;
        // 소수점 아래 6자리까지 출력
		System.out.printf("%.6f\n", avg);
	
	}

}
  • 등급에 따른 과목평점을 가져오기 위해 <String, Double> 형태의 HashMap 만들어서 사용
    - 파이썬의 딕셔너리와 같은 기능
    - put을 통해 값 입력
    - `get(key)`를 통해 value 가져옴
  • if - continue를 통해 등급이 P면 계산에서 제외
  • string을 비교할 때는 ==이 아닌 `변수.equals("비교대상")` 을 써야 한다.
    파이썬이랑 혼동해서 ==으로 비교했다가 안 돼서 한참을 애먹었다..