Problem

옷의 종류와 이름이 주어지면 스파이들이 입을 수 있는 옷의 조합의 수를 구하는 문제입니다.

 

스파이들은 하루에 같은 종류의 옷은 하나밖에 입을 수 없고 다른 종류는 최소 한개만 입으면 됩니다.

 

 

Solution

모든 조합을 구하는 문제입니다.

 

리스트를 구하는 문제가 아니라 총 조합의 수를 구하는 문제이기 때문에 비교적 쉽게 구할 수 있습니다.

 

옷의 종류는 하루에 하나씩이기 때문에 입는 경우, 입지 않는 경우 이렇게 두개로 분류하면 됩니다.

 

문제에 나와있는 예제를 보면 얼굴 종류에는 동그란 안경, 검정 선글라스 이렇게 있습니다.

 

그럼 총 세개의 경우가 나옵니다.

 

  1. 아무것도 선택하지 않음
  2. 동그란 안경 선택
  3. 검정 선글라스 선택

 

그리고 상의는

 

  1. 아무것도 선택하지 않음
  2. 파란색 티셔츠 선택

 

그리고 하의는

 

. . .

 

이런 식으로 모든 종류에 대해서 모든 경우를 구하면 됩니다.

 

스파이는 반드시 하나의 종류는 걸쳐야 하므로 전부 아무것도 선택하지 않는 경우만 빼주면 됩니다.

 

식은 (각 종류 + 1) 의 곱 - 1 이 됩니다.

 

 

Java Code

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        HashMap<String, Integer> map = new HashMap<>();
        
        for (String[] cloth : clothes) {
            map.put(cloth[1], map.getOrDefault(cloth[1], 0) + 1);
        }
        
        int result = 1;
        for (String key : map.keySet()) {
            result *= map.get(key) + 1;
        }
        
        return result - 1;
    }
}

 

+ Recent posts