https://school.programmers.co.kr/learn/courses/30/lessons/42578
조합을 떠올렸는데 전체 조합의 개수를 어떻게 구할까 고민이 많았다. 참고 풀이를 보고 나서 아이디어를 가져올 수 있었다.
즉 A / B를 선택하는 방법에는
A
B
AB
이렇게만 생각했는데 이걸 '선택'이라는 기준으로 쪼개서 생각해보면
A선택 B선택X
A선택X B선택
A선택 B선택
A선택X B선택X
이렇게 생각할 수 있다. 따라서 각 경우의 + 1 을 해준 값을 곱하고, 전체 경우에서 - (모두 선택하지 않는 경우 1가지)를 빼주면 되는 것이다.
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
Map<String, Integer> map = new HashMap<>();
int answer = 1;
for(String[] arr : clothes){
map.put(arr[1], map.getOrDefault(arr[1], 0) + 1);
}
System.out.println(map);
for(Integer value : map.values()){
answer *= value + 1;
}
return answer - 1;
}
}