의상을 조합하는 경우의 수를 어떻게 계산해야 하는지 고민했다.
결국 하나하나 따져보니 A와 B를 조합하는 경우의 수는 A * B가 되고
A를 착용하고 B는 착용하지 않거나 A를 착용하지 않고 B를 착용하는 경우도 있으니
(A+1) * (B+1)이 된다.
마지막으로 아무것도 안입는것은 허용되지 않으므로 아무것도 입지 않은 1가지를 빼주면
(A+1) * (B+1) - 1 이 된다.
최종 코드
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
// 곱셉을 위해 1로 초기화
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
// 옷 종류별로 map에 넣기
for (int i=0; i<clothes.length; i++) {
map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0) + 1);
}
// 의상 조합 (A와 B를 조합하는 경우의 수)
for(String key : map.keySet()) {
answer *= map.get(key)+1;
}
// 아무것도 안입었을 경우 제거
answer--;
return answer;
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 다리를 지나는 트럭 (0) | 2022.01.23 |
---|---|
(Java) 프로그래머스 소수찾기_L2 (0) | 2022.01.23 |
(Java) 프로그래머스 카펫 (0) | 2022.01.16 |
(Java) 프로그래머스 구명보트 (0) | 2022.01.16 |
(Java) 프로그래머스 주식가격 (0) | 2022.01.16 |