경우의 수 개념을 제대로 알지 이해하지 못한 것이 아쉬웠다.
예를들어 모자와 안경을 쓰는 경우의 수를 생각해보자
모자는 2종류 있고 안경은 1종류 있다.
이 상황에서 모자를 쓰는 경우의 수는 3이다.
2종류 각각의 경우 + 모자를안쓰는경우
안경을 쓰는 경우의 수는 2이다.
1종류 + 안경을 안쓰는 경우
결과적으로 모자와 안경을 쓰는 경우의 수는 6이다.
하지만 문제에서 아무것도 안입는 경우를 제외한다고 하였다.
이에 모자를안쓰는 경우 X 안경을 안쓰는 경우가 1가지 이기 때문에
전체 경우의 수에서 1을 빼준 값이 정답이다.
function solution(clothes) {
let answer = 1;
const obj = {};
for(let arr of clothes) {
obj[arr[1]] = (obj[arr[1]] || 0) + 1;
}
for(let key in obj) {
answer *= (obj[key]+1);
}
return answer - 1;
}
참고