첫 시도
- 이 문제에서 어떤 의상인지는 중요 x, 의상의 종류가 핵심
- 의상의 종류를 key로, 종류의 개수를 value로 하는 map 생성
- 의상의 조합을 구하는 것이므로 map의 value를 다 곱해준다 -> 이때 의상의 종류 중 해당 종류의 의상을 안입는 다는 선택지도 있기 때문에 value + 1을 해준다
- 최소 옷을 1개는 입어야한다는 조건이 있으므로 아무것도 입지 않는 조건을 빼줘야함 -> answer - 1
- 가지고 있는 의상의 수를 N이라고 했을 떄 시간복잡도는 2N, O(N)이다
해결
- 내용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String,Integer> map = new HashMap<>();
for(int i = 0; i< clothes.length; i++){
String type = clothes[i][1];
map.put(type,map.getOrDefault(type,0)+1);
}
Iterator<Integer> it = map.values().iterator();
while (it.hasNext()){
answer *= it.next().intValue()+1;
}
return answer - 1;
}
}