본문 바로가기

TLI/코드카타

2024.06.15 TIL 코트카타 83번 (귤고르기)

    fun solution(k: Int, tangerine: IntArray): Int {

        val sizeToCount = mutableMapOf<Int,Int>()
        for (size in tangerine) {
            val numSize = sizeToCount[size]?:0
            sizeToCount[size] = numSize+1
        }

        val iterator = sizeToCount.values.iterator()
        val sizeCounts = mutableListOf<Int>()
        while (iterator.hasNext()) {
            val count = iterator.next()
            sizeCounts.add(count)
        }

        sizeCounts.sortWith{ o1, o2 ->
            Integer.compare(o2,o1)
        }

        var numChoice = 0
        var numChoiceSize = 0
        for (sizeCount in sizeCounts) {
            numChoice += sizeCount
            numChoiceSize++
            if(numChoice >= k)
                break
        }

        return numChoiceSize
    }

 

풀이 과정

1. map에 귤의 사이즈를 count해서 넣는다.(key : 사이즈, value: 개수)

2. value로만 리스트를 만들어 내림차순 정렬한다.

3. 정렬한 리스트를 for문으로 돌리면서 개수가 k개 이하일 때까지 사이즈 종류를 count한다.

 

포인트

- map의 value만 가지고 list를 만들었다.

- 어떤 사이즈가 몇 개 인지는 중요하지 않고, 사이즈 별 개수만 count해서 k개를 초과하기 전까지 사이즈 종류를 count하면 됐다.