스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.
해시문제답게 의상의 종류를 key값으로, 의상 수를 value로 하여 key-value 형태의 object를 생성한다. value를 이용해 경우의 수를 계산한다.
스파이는 하루에 최소 한 개의 의상은 입습니다.
모자+상의+하의+코트가 아니라 모자만 착용하는 날도 있을 수 있다는 것이다.
이 문구를 놓치면 경우의 수를 잘못 계산할 수 있다.
해당 문제의 질문 게시판...
function solution(clothes) {
let answer = 1;
let obj = {};
for(let i = 0; i<clothes.length;i++){
if(obj[clothes[i][1]]>=1){
obj[clothes[i][1]]+=1;
}else{
obj[clothes[i][1]] = 1;
}
}
for (let key in obj){
answer*=(obj[key]+1);
}
return answer-1 ;
}
obj는 의상 종류, 개수를 key-value로 가지는 object이다.
해당 obj의 value들에 1을 더해 모두 곱한다. 곱셈을 해야 하기에 answer의 초기값을 0에서 1로 바꾸어주어야한다!
마지막으로 스파이는 최소 1개 이상의 의상을 착용해야 하므로 모든 의상을 착용하지 않았을 때의 경우의 수 1은 차감해준다.