상세 컨텐츠

본문 제목

통계학(백준)

코딩테스트

by dofury 2023. 7. 6. 15:39

본문

728x90

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만 저장할 수 있는것이다.

728x90

'코딩테스트' 카테고리의 다른 글

마인크래프트(백준)  (0) 2023.07.08
스택(백준)  (0) 2023.07.07
균형잡힌 세상(백준)  (0) 2023.07.05
프린터 큐(백준)  (0) 2023.07.04
수 찾기(백준)  (0) 2023.07.03

관련글 더보기

댓글 영역