차곡차곡 성 쌓기
article thumbnail

1. 문제


 

2. 접근

이 문제랑 매우 비슷한 백준의 '패션왕 신혜빈' 문제랑 매우 비슷해서 그때의 기억을 복기하면서 접근했다.

 

각 옷의 종류마다 크게 2가지를 선택할 수 있다. 해당 종류의 의상을선택하지 않거나 의상 중 하나를 고르는 것이다.

예제 1를 봤을 때 headear는 2개, eyewear는 1개의 의상이 있다. 이때 headear에서는 아예 선택하지 않거나, yellow_hat을 선택하거나 green-tuban을 선택할 수 있는 경우로 총 3가지가 있다. 같은 옷의 종류는 무조건 하나 이하만 선택할 수 있기 때문이다.

 

이를 일반화 시키면 i 종류에서 선택할 수 있는 경우 = i 종류의 의상 개수 +1(선택 안하는 경우) 이다.  모든 경우의 수를 구하기 위해 종류마다 경우의 수를 구한 후 곱하면 모든 경우의 수를 구할 수 있다. 다만 모든 의상을 선택하지 않았을 떄 경우의 수도 있기 때문에 마지막에 1를 빼준다.

 

 

 

3. 코드

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        // 해쉬 맵으로 <종류, 카운트> 받기
        HashMap <String ,Integer> map = new HashMap();
        int result = 1;
        
        for(int i=0; i< clothes.length; i++)
            map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0)+1);
        

        Iterator<Integer> iterator = map.values().iterator();

        while(iterator.hasNext()){
             result *= (iterator.next()+1);
        }

        // 아무것도 안 입었을 때 제외
        return result-1;
    }
}

 

 

728x90
profile

차곡차곡 성 쌓기

@nagrang

포스팅이 좋았다면 "좋아요" 해주세요!