https://school.programmers.co.kr/learn/courses/30/lessons/42578
HashMap 을 사용해서 해결하였다.
키는 장착타입, 값은 가능한 상태의 숫자
예를들어 머리장착타입 모자A 하나 있다면. 2로 값을 세팅한다. 왜냐면 모자A이 없는 상태, 모자A 있는 상태 라서 그렇다.
머리장착타입 모자B 가 있다면 3로 값을 세팅한다. 모자A 모자B 둘다 없는상태, 모자A 있는상태, 모자B 있는상태 라서 그렇다.
이런식으로 타입별로 가능한 상태 숫자를 구하고 이 숫자들을 곱하고 -1을 하였다.
아무것도 장착하지 않은 상태는 빼줘야 하니까
그리고 모든 아이템들의 장착타입이 한가지만 있는경우는 아이템 개수가 곧 가능한 상태개수가 된다.
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 0;
HashMap<String, Integer> map = new HashMap<>();
for(int i = 0; i < clothes.length; ++i)
{
String curV = clothes[i][0];
String curK = clothes[i][1];
if(map.containsKey(curK))
{
map.put(curK, map.get(curK)+1);
}
else
{
map.put(curK, 2);
}
}
int sum = 0;
if(map.size() > 1)
{
Collection<Integer> values = map.values();
for(int val : values)
{
if(sum == 0)
sum = val;
else
sum *= val;
}
sum--;
}
else
sum = clothes.length;
return answer = sum;
}
}