문제
접근 방식
옷의 종류를 key로, 해당 종류의 옷 이름 리스트를 value로 하는 맵을 생성하고 저장한다.
각 종류 별로 옷을 선택하지 않거나 옷을 하나만 선택할 수 있으므로 모든 종류에 대해 (옷의 종류 + 1) 를 모두 곱한 값에서 아무 옷도 선택하지 않을 경우의 수인 1을 뺀 값을 출력한다.
코드
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
class Solution {
public int solution(String[][] clothes) {
HashMap<String, List<String>> map = new HashMap<>();
for(String[] item : clothes) {
String name = item[0];
String type = item[1];
List<String> list = map.getOrDefault(type, new ArrayList<>());
list.add(name);
map.put(type, list);
}
int answer = 1;
for(List<String> list : map.values()) {
answer *= list.size()+1;
}
return answer - 1;
}
}