본문 바로가기
2023년 이전/프로그래머스 코딩 테스트

위장

by JeongUPark 2020. 8. 9.
반응형
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