29614번: 학점계산프로그램백준/문제2024. 7. 15. 13:29
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/29614
언어 : Kotlin
문제 설명 :
종현은 영도와 함께 학교 포털 사이트에서 데이터를 가져와 본인의 학점을 계산하는 프로그램을 만들고 있다. 종현은 영도가 사이트에서 추출한 등급 데이터를 사용해서 평균 학점을 출력하고자 한다.
등급별 학점은 다음의 표를 따른다.
등급 | 학점 |
A+ | 4.5 |
A | 4.0 |
B+ | 3.5 |
B | 3.0 |
C+ | 2.5 |
C | 2.0 |
D+ | 1.5 |
D | 1.0 |
F | 0.0 |
입력 :
첫째 줄에 과목별 등급이 나열된 문자열 S가 주어진다. 등급 사이에는 별도의 구분자가 없다. 문자열은 표에 있는 문자들로만 이루어져 있으며, 최대 1,000 글자로 이루어져 있다.
출력 :
문자열 S에 나열된 등급으로 구한 학점의 산술평균을 첫째 줄에 출력한다. 정답과 출력값의 절대/상대 오차는 10^{-4}까지 허용한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
A+A | 4.25 |
A+AB+B+C | 3.5 |
CA+ABBB+A | 3.42857 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val input = readLine().
replace("A+", "0").
replace("A", "1").
replace("B+", "2").
replace("B", "3").
replace("C+", "4").
replace("C", "5").
replace("D+", "6").
replace("D", "7").
replace("F", "8")
val converted = input.chunked(1).map { convertGrade(it) }
bw.write(String.format("%.5f", converted.sum() / converted.size))
bw.flush()
bw.close()
}
fun convertGrade(grade: String): Double {
return when (grade) {
"0" -> 4.5
"1" -> 4.0
"2" -> 3.5
"3" -> 3.0
"4" -> 2.5
"5" -> 2.0
"6" -> 1.5
"7" -> 1.0
else -> 0.0
}
}
'백준 > 문제' 카테고리의 다른 글
7662번: 이중 우선순위 큐 (0) | 2024.07.16 |
---|---|
23738번: Ресторан (1) | 2024.07.15 |
31867번: 홀짝홀짝 (0) | 2024.07.15 |
26742번: Skarpetki (0) | 2024.07.12 |
3578번: Holes (0) | 2024.07.12 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!