
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 |

@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!