TLI/코드카타
2024.06.15 TIL 코트카타 83번 (귤고르기)
jaeseonyoo
2024. 6. 15. 23:14
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하면 됐다.