반응형
```
백준 18110번 solved.ac Kotlin 구현해 보기
```
배워갈 내용
- 백준 18110번 풀이
문제 링크
https://www.acmicpc.net/problem/18110
문제 설명
백준 18110번 solved.ac은
난이도 실버등급의 문제로서
난이도의 개수 n이 주어지고
n만큼 점수 의견이 주어지면
의견의 리스트에서
위에서 15프로
아래에서 15프로
높고 낮은 값들을 반올림하고 빼고
평균을 구해서 반올림한다음 출력해 주면 됩니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
코드 설명
입력을 받고
정해진 조건에 맞춰서 계산을 해서 출력해 주면 되는
문제입니다.
요즘에는 주석이나 설명 없이 코드로 설명하고자 노력 중입니다
만약 코드가 이해가 안 가시면 댓글 부탁드립니다
코드
import kotlin.math.roundToInt
fun main() {
val inputDto = readInput()
print(inputDto.findScore())
}
data class InputDto(
val n: Int,
val opinions: MutableList<Int>
) {
fun findScore(): Int {
if (n == 0 || opinions.size == 0) {
return 0
}
return calculateTrimmedMean(opinions, 15.0)
}
private fun calculateTrimmedMean(values: List<Int>, trimPercentage: Double): Int {
if (values.isEmpty() || trimPercentage < 0.0 || trimPercentage >= 50.0) {
throw IllegalArgumentException("Invalid input")
}
val sortedValues = values.sorted()
val trimSize = (values.size * trimPercentage / 100.0).roundToInt()
val trimmedValues = sortedValues.subList(trimSize, values.size - trimSize)
return trimmedValues.average().roundToInt()
}
}
fun readInput(): InputDto {
val n = readLine()
?.toIntOrNull()
?: throw IllegalArgumentException("Invalid n")
val opinions: MutableList<Int> = ArrayList()
repeat(n) {
opinions.add(
readLine()
?.toIntOrNull()
?: throw IllegalArgumentException("Invalid opinion")
)
}
return InputDto(n, opinions)
}
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형
'Kotlin > Kotlin 알고리즘' 카테고리의 다른 글
백준 1966번 프린터 큐 Kotlin 구현해 보기 (0) | 2023.10.09 |
---|---|
백준 3040번 백설 공주와 일곱 난쟁이 Kotlin 구현해 보기 (0) | 2023.10.08 |
백준 11866번 요세푸스 문제 0 Kotlin 구현해 보기 (0) | 2023.10.07 |
백준 10810번 공 넣기 Kotlin 구현해 보기 (0) | 2023.10.07 |
백준 1436번 영화감독 숌 Kotlin 구현해 보기 (0) | 2023.10.07 |