[프로그래머스] 위장

2020. 4. 1. 15:49프로그래머스/LEVEL 2

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        
        HashMap<String, Integer> hm = new HashMap<>();
        
        for(int i=0; i<clothes.length; i++){
            if(hm.containsKey(clothes[i][1])){
                hm.replace(clothes[i][1],hm.get(clothes[i][1])+1);
            }else{
                hm.put(clothes[i][1],1);
            }
        }
        
        for(int v : hm.values()){
            answer *= v+1;
        }
        answer = answer -1;
        return answer;
    }
}

1. 기본적으로 조합을 구하는 각 종류에 선택될 수 있는 옵션 갯수들을 곱하는 방법

2. 하지만 선택하지 않아도 되는 경우도 가능하므로 각 옵션 갯수에 +1씩 해서 곱한다.

3. 아무것도 선택되지 않은 1가지 경우를 빼면 전체 경우의 수 구할 수 있다.