TIL 65 | 자바스크립트로 알고리즘 (프로그래머스 위장 JS)

Gom·2021년 4월 26일
0

Algorithm

목록 보기
34/48
post-thumbnail

문제 바로가기

문제요약

스파이가 가진 의상들이 담긴 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은 차감해준다.

profile
안 되는 이유보다 가능한 방법을 찾을래요

0개의 댓글