n차식 계수들의 합
설명 링크
옷의 종류가 1이고 개수가 a일 때 > a가지 경우
옷의 종류가 2이고 개수가 a, b일 때 > a, b, ab > (a+b) + (ab)가지 경우
옷의 종류가 3이고 개수가 a, b, c일 때 > (a+b+c) + (ab+bc+ca) + (abc)가지 경우
n차식 계수들의 합 = (x+a)(x+b)(x+c) = x3 + (a+b+c)x2 + (ab+bc+ca)x + (abc)
x=1 대입, x3은 포함되지 않으므로 -1
function solution(clothes) {
// 의상의 종류(key) : 의상의 이름(value)
// 각 종류별로 모으기
const cate = {};
// clothes 배열을 돌면서 같은 종류끼리 키:값으로 분류
clothes.forEach((ele)=>{
const category = ele[1]
if(cate[category]){
cate[category].push(ele[0])
} else {
// 배열형식으로 넣지 않으면 그냥 문자열로 들어감!!
cate[category] = [ele[0]]
}
})
let mix = 1;
// n차식 계수들의 합
// (1+a)(1+b)(1+c) - 1
for (let key in cate) {
const total = cate[key]
mix *= 1+total.length;
}
return mix-1;
}
function solution(clothes) {
return Object.values(clothes.reduce((obj, t)=> {
obj[t[1]] = obj[t[1]] ? obj[t[1]] + 1 : 1;
return obj;
} , {})).reduce((a,b)=> a*(b+1), 1)-1;
}
풀이식은 같은데 구현을 다르게 한 경우.
필요한건 value의 세부 값이 아니라 length값이기 때문에 굳이 의상의 이름 값을 넣을 필요가 없었음.