package com.example.algorithm
import java.math.BigDecimal
import java.math.RoundingMode
import java.util.*
import java.util.Collections.max
import java.util.Collections.min
fun main(){
val count = readLine()!!.toInt()
val list = mutableListOf<Int>()
val map = mutableMapOf<Int,Int>()
repeat(count){
list.add(readLine()!!.toInt())
}
println(BigDecimal(list.sum().toDouble() / list.count().toDouble()).setScale(0,RoundingMode.HALF_UP).toInt())//산술 평균 첫번째 자리에서 반올림
list.sort()
println(list[list.count()/2])//중앙값
repeat(count){i ->
if(map[list[i]] == null){
map[list[i]] = 1
}else{
map[list[i]] = map[list[i]]!! + 1
}
}
val sortedMap = map.entries.sortedByDescending { it.value }
val maxKeyValue = sortedMap[0].value
val maxKey = sortedMap.takeWhile { it.value == maxKeyValue }.map { it.key }//최빈값과 같은 갯수구하기
if(maxKey.size == 1){
println(maxKey[0])//최빈값
}else{
println(maxKey[1])//최빈값
}
println(max(list) - min(list))//범위
}
해당 문제는 코틀린의 문법을 활용해 간단히 풀수있다.
이번 문제를 통해 Map자료형의 takeWhile을 처음알게 되었는데 주어진 조건을 취하는 요소를 가져온다(리스트로 저장).
해당 요소를 map() 함수를 통하여 map<Int,Int>가 아닌 key만 저장할 수 있는것이다.
마인크래프트(백준) (0) | 2023.07.08 |
---|---|
스택(백준) (0) | 2023.07.07 |
균형잡힌 세상(백준) (0) | 2023.07.05 |
프린터 큐(백준) (0) | 2023.07.04 |
수 찾기(백준) (0) | 2023.07.03 |
댓글 영역