본문 바로가기
Study Note/Algorithm

프로그래머스 #해시 - 위장 lv2

by 시뮝 2021. 1. 10.
728x90

function solution(clothes) {
    let clothesKeys = []; //의상이름 ['a', 'b', ...]
    
    //1. 의상 이름 담기
    for(let i=0; i<clothes.length; i++) {
        let key = clothes[i][1];

        if(clothesKeys.length==0){
            clothesKeys.push(key);
        } else {
            //추가된 키가 없으면 추가.
            if(!clothesKeys.find(k=>k==key)) {
                clothesKeys.push(key);
            }
        }
    }
    
    //2. 다른 조합의 수 구하기
    // 다른 조합의 수 = key 갯수 + (keys의 key.length 들을 곱한 수)
    let resultCnt = 0;
    
    if(clothesKeys.length==1) {
        return clothes.length;
    } else {
        for(let i=0; i<clothesKeys.length; i++) {
            let cnt = clothes.filter(clo=>clo[1]==clothesKeys[i]).length;
            cnt = cnt+1; //선택안함 경우의수 추가

            if(resultCnt==0) {
                resultCnt = cnt;
            } else {
                resultCnt = resultCnt * cnt;
            }
        }

        resultCnt = resultCnt-1; //하나도 선택안함 경우의수 빼기

        return resultCnt; //clothes.length
    }
}

728x90

댓글