728x90
반응형
문제 요약
- 알고리즘 분류: 구현, 수학
- 난이도: Silver5
- 문제내용:
- 전공평점은 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값
- P/F 과목 중 등급이 'P'인 과목은 계산에서 제외해야 함
- 20줄에 걸쳐 과목명, 학점, 등급이 주어짐
문제풀이
이번 문제는 단순하게 구현과 소수 계산을 요구 하는 문제이다. 등급에 따른 과목평점을 정의 한 다음 과목평점이 P를 제외한 총학점과 총 과목 평점을 계산한 뒤 총 과목 평점 / 총 학점계산만 하면 끝이다. 자세한것은 아래 코드보면 된다.
Code
Python
# 등급에 따른 과목평점 정의
grades = {
"A+" : 4.5,
"A0": 4.0,
"B+": 3.5,
"B0": 3.0,
"C+": 2.5,
"C0": 2.0,
"D+": 1.5,
"D0": 1.0,
"F": 0.0
}
s = 0 # (학점 × 과목평점)의 총합을 저장할 변수
count = 0 # 총 학점을 저장할 변수
for _ in range(20):
_, credit, grade = input().split()
credit = float(credit) # 학점
# P/F 과목 중 P인 경우 계산에서 제외
if grade != "P":
s += credit * grades[grade]
count += credit
# 전공평점 계산 = (학점 × 과목평점)의 총합 / 총 학점
print(s / count)
Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
// 등급에 따른 과목평점 정의
static Map<String, Float> grades = Map.of(
"A+", 4.5f,
"A0", 4.0f,
"B+", 3.5f,
"B0", 3.0f,
"C+", 2.5f,
"C0", 2.0f,
"D+", 1.5f,
"D0", 1.0f,
"F", 0.0f
);
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader((System.in)));
float sum = 0; // (학점 × 과목평점)의 총합을 저장할 변수
float count = 0; // 총 학점을 저장할 변수
for (int i = 0; i < 20; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
st.nextToken();
float credit = Float.parseFloat(st.nextToken()); // 학점
String grade = st.nextToken(); // 등급
// P/F 과목 중 P인 경우 계산에서 제외
if(!grade.equals("P")){
sum += credit * grades.get(grade);
count += credit;
}
}
// 전공평점 계산 = (학점 × 과목평점)의 총합 / 총 학점
System.out.println(sum / count);
}
}
Javascript
var input = require('fs').readFileSync("/dev/stdin", "utf-8").trim().split("\n");
// 등급에 따른 과목평점 정의
const grades = {
"A+" : 4.5,
"A0": 4.0,
"B+": 3.5,
"B0": 3.0,
"C+": 2.5,
"C0": 2.0,
"D+": 1.5,
"D0": 1.0,
"F": 0.0,
};
let totalCredits = 0; // (학점 × 과목평점)의 총합을 저장할 변수
let count = 0; // 총 학점을 저장할 변수
for (let i = 0; i < 20; i++) {
let [subject, credit, grade] = input[i].replace("\r", "").split(" ");
credit = parseFloat(credit);
// P/F 과목 중 P인 경우 계산에서 제외
if(grade !== "P"){
totalCredits += credit * grades[grade];
count += credit;
}
}
// 전공평점 계산 = (학점 × 과목평점)의 총합 / 총 학점
console.log(totalCredits / count);
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[BAEKJOON]2745 진법 변환 (0) | 2025.04.24 |
---|---|
[BAEKJOON]25206 너의 평점은 (0) | 2025.04.24 |
[BAEKJOON]2748 피보나치 수 2 (0) | 2025.01.14 |
[BAEKJOON]1965 상자넣기 (0) | 2024.11.27 |
[BAEKJOON]11055 가장 큰 증가하는 부분 수열 (0) | 2024.11.24 |