본문 바로가기
알고리즘/프로그래머스

[프로그래머스 고득점Kit] 위장(해시) - Javascript

by twinkite 2021. 9. 16.
반응형

실제 조합을 일일히 구해서 계산하면 아마 통과하지 못할것이다. 
처음에 조합으로 풀고 제출했더니 테케 1번이 오답이 떴고 질문하기를 가보니까 나같은 사람들이 우글대고있었다.
찾아보니까 훨씬 더 간단하게 해결할 수 있는 방법이 있었다. 

function solution(clothes) {
    var type = new Map();
    var arr = [];
    var i=0;
    clothes.map((value, idx) => {
        if(type.get(value[1])===undefined){
            arr[i]=2;
            type.set(value[1], i++)
        } else {
            arr[type.get(value[1])]+=1;
        }
    })
    var answer = 1;
    arr.map(value => {
        answer*=value;
    })
    answer-=1;
    return answer;  
}



arr은 종류별 의상의 개수이다. 초기 arr[i]가 2인 이유는 해당 의상을 선택하지 않는 경우도 포함시켜 주기 위함이다. 종류별 의상의 개수 파악이 끝나면 각 종류별 의상의 수를 모두 곱해주고 마지막에 아무것도 입지 않는 경우를 빼준다.(최소한 한가지 의상은 착용해야 하기 때문)

반응형