https://www.acmicpc.net/problem/9375

 

9375번: 패션왕 신해빈

첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로   (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

www.acmicpc.net

 

 

[난이도] Silver3
[유형] Map

[풀이]

각 옷의 종류를 map<String,Int> 의 키로 하여 각 옷의 종류마다 몇개의 옷이 있는지 value로 저장합니다. 

그 뒤 모든 (value+1)을 곱해준 값에서 1을 빼준 값이 정답이 됩니다.

value에 1을 더해주는 이유는 이 종류의 옷을 입지 않은 경우의 수이며

마지막에 1을 빼주는 이유는 아무 종류의 옵도 입지 않은 경우는 제외시켜야 하기 때문입니다.

 

import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
    var tc = readLine().toInt()
    while(tc-->0) {
        var N = readLine().toInt()
        val mp = HashMap<String, Int>()
        for(i in 0 until N) {
            val a = readLine().split(" ")[1]
            if(mp.containsKey(a)) mp[a] = 1+mp[a]!!
            else mp[a] = 1
        }
        var ans=1
        for(a in mp.values) ans*=(a+1)
        println(ans-1)
    }
}

https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Silver3/9375.cpp

+ Recent posts