배열을 비우는데 들어가는 최저연산수 계산,2,3개를 묶어서 날릴수있음,못날리면 -1리턴
해시맵으로 모은다음
3으로 div쳤을때 값이 1이상이고 mod쳐봤을때 0이면 값을 res에 (div)만큼 더하고(6을 3으로 나누기)
3으로 div쳤을때 값이 1이상이고 mod쳐봤을때 1이면 값을 res에 (div-1)+2만큼 더하고(7을 3+4로 만들고 4를 2*2로 나누기)
3으로 div쳤을때 값이 1이상이고 mod쳐봤을때 2이면 값을 res에 (div)+1만큼 더하고(5를 3+2로 만들기)
3으로 div쳤을때 값이 0이고 mod쳐봤을때 2이면 res+=1
3으로 div쳤을때 값이 0이고 mod쳐봤을때 1이면 -1리턴
7=3+2*2
8=3*2+2*1
정답
class Solution {
fun minOperations(nums: IntArray): Int {
val numHashMap = hashMapOf<Int, Int>()
var res=0
for (i in nums){
numHashMap[i]=numHashMap[i]?.plus(1)?:1
}
for ((key,value) in numHashMap){
val divValue=value / 3
val modValue=value % 3
if (divValue>=1){
if (modValue==0){
res+=divValue
}else{
res+=divValue+1
}
}
if(divValue==0){
if (modValue==2){
res+=1
}
if (modValue==1){
return -1
}
}
}
return res
}
}
'알고리즘' 카테고리의 다른 글
릿코드 938. Range Sum of BST 코틀린 (0) | 2024.01.08 |
---|---|
릿코드 300. Longest Increasing Subsequence 코틀린 (0) | 2024.01.05 |
릿코드 2125. Number of Laser Beams in a Bank 코틀린 (0) | 2024.01.03 |
릿코드 2610. Convert an Array Into a 2D Array With Conditions 코틀린 (0) | 2024.01.02 |
릿코드 455. Assign Cookies 코틀린 (1) | 2024.01.01 |