백준 알고리즘 너의 평점은 25206번- 코틀린 풀이
https://www.acmicpc.net/problem/25206
문제
정답
import java.util.*;
fun main() {
val sc = Scanner(System.`in`)
var sum = 0.0
var sumScore = 0.0
for(i in 0..19) {
val subject = sc.next()
val score = sc.nextDouble()
val grade = sc.next()
val parsedGrade = parseGradeToScore(grade)
if (parsedGrade != -1.0) {
sum += parsedGrade * score
sumScore += score
}
}
println(sum / sumScore)
}
fun parseGradeToScore(grade: String): Double {
return when(grade) {
"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}
else -> {-1.0}
}
}
풀이
이번 문제는 평균 학점을 구하는 문제입니다.
문제에서 제시되었듯이 P(Pass) 과목을 제외한 나머지 과목들의 등급을 과목학점으로 변환하고, 이를 학점과 곱하여 학점의 총합으로 나누어 주는 결과물을 출력하면 됩니다.
아래 함수에서 등급에 따른 과목학점을 변환하는 과정을 거칩니다.
fun parseGradeToScore(grade: String): Double {
return when(grade) {
"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}
else -> {-1.0}
}
변환한 과목학점이 -1.0이 아닌경우 (= P 등급이 아닌경우) sum 변수에 스코어와 곱하여 누적시켜준 뒤,
학점의 총합에 현재 과목의 학점을 누적시켜줍니다.
val parsedGrade = parseGradeToScore(grade)
if (parsedGrade != -1.0) {
sum += parsedGrade * score
sumScore += score
}
생각보다 간단한 문제인데, 그나마 헷갈릴만한 부분은 학점의 총합에 대한 설명이 없다는 것 같습니다.
감사합니다.
'백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 대지(9063번) - 코틀린 풀이 (0) | 2023.09.22 |
---|---|
[백준 알고리즘] 약수 구하기(2501번) - 코틀린 풀이 (0) | 2023.09.22 |
[백준 알고리즘] 소수(2581번) - 코틀린 풀이 (0) | 2023.09.22 |
[백준 알고리즘] 공 넣기(10810번) - 코틀린 풀이 (0) | 2023.09.11 |
[백준 알고리즘] 오븐시계(2525번) - 코틀린 풀이 (0) | 2023.09.08 |