[프로그래머스] 42578. 해시

최대 1 분 소요

문제 링크

[프로그래머스] 42578. 해시

풀이 과정

[백준] 9375. 패션왕 신해빈 과 같은 문제입니다.

headgear : yellow_hat, green_turban
eyewear : blue_sunglasses

위와 같은 의상이 있을 경우, 고르지 않는 경우도 포함시켜서 선택을 하게 되면 아래와 같은 경우의 수가 나옵니다. 최소 한 개의 의상은 입어야 하므로, 각각의 의상 종류를 하나도 선택하지 않는 한 가지의 경우를 빼면 정답이 됩니다.

headgear에서 한 가지를 고르는 경우 → 3C1 = 3

eyewear에서 한 가지를 고르는 경우 → 2C1 = 2

아무것도 고르지 않는 경우 → 1

3C1 * 2C1 - 1 = 5가지의 경우의 수가 나옵니다.


코드

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static int solution(String[][] clothes) {
        int answer = 1;

        Map<String, Integer> hashMap = new HashMap<>();
        for (int i = 0; i < clothes.length; i++) {
            String key = clothes[i][1];

            if (hashMap.containsKey(key))
                hashMap.put(key, hashMap.get(key) + 1);
            else
                hashMap.put(key, 1);
        }

        for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
            answer *= entry.getValue() + 1;
        }

        return answer - 1;
    }

    public static void main(String[] args) {
        String[][] clothes = {{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}};

        System.out.println(solution(clothes));
    }
}

카테고리:

업데이트:

댓글남기기