얼굴 : 동그란 안경, 검정 선글라스 -> 2가지상의 : 파란색 티셔츠 -> 1가지하의 : 청바지 -> 1가지겉옷 : 긴 코트 -> 1가지
count + 1
의 의미에 대해서 생각해보자.
카운트는 각각의 옷을 선택했을 경우에 대한 것을 의미한다. 하지만 여기서 한 가지 선택지가 더 존재해야 하는데 옷을 선택하지 않았을 경우에 대한 경우의 수를 생각해야 한다. 모자 한 가지를 선택하였을 경우에 대한 것과 두 가지가 있다고 하면 모자 두 가지를 선택 했을 경우 마지막으로 아무것도 선택하지 않았을 경우에 대한 것을 계산해야 하는 것이다.sum
에서 1을 빼는 것은 옷을 아무것도 입지 않았을 경우가 위의 계산에서 포함되기 때문이다. 옷을 입는 것에 대한 경우의 수를 구하는 것이기 때문에 아무것도 입지 않았을 경우에 대한 케이스는 없어야 한다.function solution(clothes) {
const map = new Map();
for (const [cloths, type] of clothes) {
map.set(type, (map.get(type) ?? 0) + 1);
}
let sum = 1;
for (const count of [...map.values()]) {
sum *= count + 1;
}
return sum - 1;
}