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하면 됐다.
'TLI > 코드카타' 카테고리의 다른 글
2024.06.17 TIL 코트카타 85번(연속 부분 수열 합의 개수) (0) | 2024.06.17 |
---|---|
2024.06.16 TIL 코트카타 84번 (괄호 회전하기) (0) | 2024.06.16 |
2024.06.14 TIL 코트카타 82번(멀리뛰기) (1) | 2024.06.14 |
2024.06.13 TIL 코트카타 81번(N개의 최소공배수) (0) | 2024.06.13 |
2024.06.11 TIL 코트카타 79번(카펫) (0) | 2024.06.11 |