본문 바로가기

코테/프로그래머스

위장

구하는 공식을 모르겠다.

각 종류의 경우의 수를 계속 곱하고 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