https://school.programmers.co.kr/learn/courses/30/lessons/42578
전체 코드
첫 번째 개체
function solution(clothes) {
let answer = 1;
let ch = {}
clothes.forEach((it) => {
ch(it(1)) = ch(it(1)) ? ch(it(1)) + 1 : 1;
})
//console.log(ch) // { headgear: 2, eyewear: 1 }
// values로 계산
const values = Object.values(ch);
//console.log(values) // ( 2, 1 )
// 착용하지 않은 경우 (배열 of)
for(let it of values){
answer *= (it+1)
console.log(answer)
}
// 전부 착용하지 않은 경우
return answer - 1
}
2. 해시
function solution(clothes) {
var answer = 1;
let cH = new Map();
for (let (key, val) of clothes) {
if (cH.has(val)) cH.set(val, cH.get(val) + 1); // 이미 val을 가지고 있다면 +1을 해주고,
else cH.set(val, 1); // 새로운 val이라면 1로 set 해준다.
}
//console.log(cH.values()) (Map Iterator) { 2, 1 }
for(let val of cH.values()) { // 객체이니 of 써야 한다
answer*=(val+1); //착용하지 않은 경우를 각 추가
}
return answer-1; //최소 한가지 이상을 착용하기 때문에 모두 착용하지 않은 경우 제외
}