https://www.acmicpc.net/problem/9375
[난이도] 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
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Silver3] 11659 : 구간 합 구하기4 (Kotlin) (0) | 2021.07.25 |
---|---|
[BOJ/백준][Silver1] 11286 : 절댓값 (Kotlin) (0) | 2021.07.25 |
[BOJ/백준][Silver1] 6064 : 카잉 달력 (C++) (0) | 2021.07.18 |
[BOJ/백준][Silver2] 5525 : IOIOI (C++) (0) | 2021.07.18 |
[BOJ/백준][Silver1] 1927 : 최소 힙 (Kotlin) (0) | 2021.07.18 |