상세 컨텐츠

본문 제목

패션왕 신해빈(백준)

코딩테스트

by dofury 2023. 7. 21. 21:29

본문

728x90

package com.dofury.kotlin

fun main() {
    val count = readLine()!!.toInt()
    repeat(count){
        val amount = readLine()!!.toInt()
        val map = mutableMapOf<String, Int>()

        repeat(amount){
            val input = readLine()!!.split(' ')
            if(map[input[1]]==null)
                map[input[1]] = 0
            map[input[1]] = map[input[1]]!! + 1
        }
        var result = 1
        map.forEach { (key, value) ->
            result *= combination(value+1,1)
        }
        println(result-1)
    }

}


fun combination(n:Int, r: Int): Int {

    return if(n == r || r == 0){
        1
    }
    else
        combination(n - 1, r-1) + combination(n-1,r)
}

이 문제의 핵심들은 조합을 구하는 함수를 구현하는 방법과

어떻게 종류별로 경우의 수를 구하는 방법이다.

함수는 인터넷에서 조합에 관한 정보를 토대로 함수를 구현하였다.

그러나 종류 별로 경우의 수를 고려할려고 하니 막막하였다.

그래서 생각을 해보았는데 답을 알 수 있었다.

해당 부위의 옷이 없는경우도 투명옷이라고 고려하여 +1 하여

조합을 사용해 1개 구해준다음 각각 결과를 옷의 종류 만큼 곱해준다.

그러면 전부 투명옷인 경우가 생기므로 이때 -1을 빼주면 되는것이다.

728x90

'코딩테스트' 카테고리의 다른 글

덱(백준)  (0) 2023.07.24
큐(백준)  (0) 2023.07.23
Four Squares(백준)  (0) 2023.07.20
ATM(백준)  (0) 2023.07.20
비밀번호 찾기(백준)  (0) 2023.07.18

관련글 더보기

댓글 영역