class Solution {
fun solution(clothes: Array<Array<String>>): Int {
var answer = 1
var clothMap = mutableMapOf<String,Int>()
var typeSize = 0
for(i in 0..clothes.size-1)
{
if(clothMap.containsKey(clothes[i][1]))
{
typeSize = clothMap.get(clothes[i][1])!! + 1
clothMap.put(clothes[i][1],typeSize)
}
else
{
clothMap.put(clothes[i][1],1)
}
}
for(item in clothMap)
{
answer *= item.value +1
}
answer -= 1
return answer
}
}
첨에 해시 문제길래 sets 를 사용해서 접근해보았으나
문제를 풀다보니 map 사용하는 문제 인 것 같아서 map을 사용해서 문제를 풀었다.
해설
map의 key는 고유한 값이기 때문에 같은 키 값이 들어오면 무시한다.
이를 이용해 고유키 값을 의상종류로 설정해두고 키에 대응되는 값은 의상종류의 수
그다음 반복문을 통해 새로운 종류이면 1로 map에 추가가 되고
기존에 있던 종류라면 기존 종류의 수에 +1이 된다.
반복문이 끝나면 의상 종류 별로 갯수가 나오는데 문제가 요구하는건 결국 이 의상들로 가능한 경우의 수이다.
안 입을 수도 있으니 안입는 경우를 의상 종류에 전부+1 을 해서 곱한다.
전부 안 입는건 제외한다 했으니 곱한 값에다가 -1를 하면 정답이 된다.
수리공 항승 (0) | 2023.05.09 |
---|---|
행렬의 곱셈(2레벨) (0) | 2023.01.25 |
괄호 회전하기(2레벨) (0) | 2023.01.24 |
H-Index(2레벨) (0) | 2023.01.21 |
멀리뛰기(2레벨) (0) | 2023.01.21 |
댓글 영역