function solution(clothes) {
let map = clothes.reduce((acc,e,i) =>
acc.set(e[1],acc.get(e[1]) + 1 || 2)
,new Map());
return Array.from(map.values())
.reduce((acc,e) => acc*e ,1) - 1
}
모든 의상을 입어야한다면 종류별 의상개수를 모두 곱해주면 모든 경우의 수가 나온다.
하지만 의상을 아예 안입는 경우부터~하나..둘..~종류별로 모두 한가지씩 입는 경우의 수까지 고려하기위해서는 종류별 의상개수마다 +1을 해준다음에 곱해주면 경우의 수가 나온다.
즉 모자 : 2 상의 : 3 바지 : 2 일 때
종류별로 한가지씩 꼭 입어야한다면 232 = 12가지
모두안입는~모두 한가지씩 입는 : (2+1) (3+1) (2+1) = 36가지이다.