구하는 공식을 모르겠다.
각 종류의 경우의 수를 계속 곱하고 1을 빼면 된다는 걸 인터넷을 참고하다 알았다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class Solution {
public int solution(String[][] clothes) {
HashMap<String, Integer> hm = new HashMap();
//답을 내는 공식 = 한 종류의 모든 경우 * 한 종류의 모든 경우 *... -1
//답을 내는 공식의 -1, 다 벗고 있을때의 경우
//한 종류의 모든 경우 = 종류 + 1 , +1은 다 안 쓰고 있는 경우
//
for (int i = 0; i < clothes.length; i++) {
String kind = clothes[i][1];
//hm.put(종류,종류의 개수)
//hm.getOrDefualt(kind가 중복이면 kind에 대한 값을 넣어주고 +1 , 중복 아니면 기본값 +1)
//결과적으로 kind++ 가 된다.
hm.put(kind, hm.getOrDefault(kind, 0) + 1);
}
int answer = 1; //곱하기 위해서
for (int i : hm.values()) {
answer *= i +1; // i+1 == 각 종류의 경우의 수
}
//옷을 하나도 입지 않은 상태를 빼준다.
return answer-1;
}
}
|
cs |
'코테 > 프로그래머스' 카테고리의 다른 글
더 맵게 (0) | 2021.01.21 |
---|---|
주식 가격 (0) | 2021.01.07 |
다리를 지나가는 트럭 (0) | 2021.01.06 |
프로그래머스 lv2 - 전화번호 목록 (0) | 2021.01.04 |
최솟값 만들기 (0) | 2020.12.30 |