의상의 이름과 종류가 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합 수를 return하는 solution함수를 작성하는 문제이다.
의상 종류를 key로, 의상 이름을 ArrayList에 담는 HashMap을 생성한 다음,
의상 종류에 따른 경우의 수(주어진 의상을 선택할 경우의 수list.size()
+ 입지 않을 경우의 수 1
)를 곱하고,
'하루에 최소 한 개의 의상은 입습니다'라는 조건에 따라, 아무것도 입지 않을 선택지를 -1하였다.
import java.util.ArrayList;
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, ArrayList<String>> map = new HashMap<>();
for (String[] clothe : clothes) {
if (!map.containsKey(clothe[1])) {
ArrayList<String> list = new ArrayList<>();
map.put(clothe[1], list);
}
map.get(clothe[1]).add(clothe[0]);
}
for (ArrayList<String> list : map.values()){
answer *= (list.size() + 1);
}
return answer-1;
}
}