반응형
import java.util.*
class Solution {
fun solution(clothes: Array<Array<String>>): Int {
var answer = 0
val category = HashMap<String , Int>()
for (i in clothes.indices ){
if( category.get(clothes[i][1]) == null) {
category.put(clothes[i][1],1)
}else{
var lenght : Int = category.get(clothes[i][1]) as Int
lenght++
category.put(clothes[i][1],lenght)
}
}
if (category.size == 1 ){
return clothes.size
}else{
val values = category.values
var answer = 1
for (value in values ){
answer = answer * (value+1)
}
answer --
return answer
}
return 0
}
}
스파이 위장
hashmap 사용해서 공통인 부분 지우고 계산
이때 확률 계산은 종류의 값에 따라 (m+1) * (n+1) * (o+1) -1 로 확률을 구할 수 있다.
그런데 kotlin을 사용할 때 groupby라는 훌륭한 기능을 통하여 group화하여 더 간단하게 코딩할 수 있습니다.
class Solution {
fun solution(clothes: Array<Array<String>>) = clothes
.groupBy { it[1] }.values // group by type of clothes, keep only names of clothes
.map { it.size + 1 } // number of things to wear in a group (including wearing nothing)
.reduce(Int::times) // combine
.minus(1) // remove the case where the spy wears nothing
}
반응형
'2023년 이전 > 프로그래머스 코딩 테스트' 카테고리의 다른 글
전화번호 목록 (0) | 2020.08.09 |
---|---|
완주하지 못한 사람 (0) | 2020.08.09 |