출처: 프로그래머스 코딩테스트 해시 3번째 문제
(https://programmers.co.kr/learn/courses/30/lessons/42578?language=javascript)
스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.
스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.
function solution(clothes) {
const keys = clothes.map( el => el[1])
return keys.filter( (el,idx) => keys.indexOf(el) === idx )
.reduce((acc,cur) => (
acc * (clothes.filter( el => el[1] === cur ).length + 1)
),1) - 1;
}
처음에는 조합 알고리즘을 이용해 하나씩 선택해가며 모든 조합의 종류를 산출한 후 가짓수를 계산했는데 너무 오래걸렸었다.
그러던 중 질문하기 코너에서 안 입는 것도 하나의 가짓수로 산정하라는 팁을 듣고 나서 간단하게 풀 수 있었다.