

import java.util.HashMap;
public class PRO_42578 {
public static int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0) + 1);
}
// keySet() : key 값만 출력
for (String key : map.keySet()) {
answer *= (map.get(key) + 1);
}
answer -= 1;
return answer;
}
public static void main(String[] args) {
String[][] clothes = {{"yellowhat", "headgear"}, {"bluesunglasses", "eyewear"}, {"green_turban", "headgear"}};
System.out.println(solution(clothes));
}
}
해시와 경우의 수를 생각하여 문제에 접근했다. answer를 1로 초기화한 이유는 값들을 곱하기 위함이다. 해시맵을 생성하여 옷 종류를 해시에 저장했다. 같은 종류는 value 값을 1 증가해주고, 같은 종류가 없다면 해시맵에 새로 key를 추가했다. 그 후, 종류별 개수를 모두 곱하여 총 경우의 수를 구했다. (map.get(key) + 1)에서 +1을 추가한 이유는 그 종류의 옷을 입지 않는 경우까지 더해주기 위함이다. 마지막에 answer를 리턴할때 -1을 해준 이유는 어떠한 옷도 입지 않은 경우의 수를 없애기 위함이다.