프로그래머스 - 의상 - HashMap - Java

chaemin·2024년 7월 20일
0

프로그래머스

목록 보기
60/64

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/42578

2. 풀이

참고 풀이

조합을 떠올렸는데 전체 조합의 개수를 어떻게 구할까 고민이 많았다. 참고 풀이를 보고 나서 아이디어를 가져올 수 있었다.

즉 A / B를 선택하는 방법에는

A
B
AB

이렇게만 생각했는데 이걸 '선택'이라는 기준으로 쪼개서 생각해보면

A선택 B선택X
A선택X B선택
A선택 B선택
A선택X B선택X

이렇게 생각할 수 있다. 따라서 각 경우의 + 1 을 해준 값을 곱하고, 전체 경우에서 - (모두 선택하지 않는 경우 1가지)를 빼주면 되는 것이다.

3. 코드

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        
        Map<String, Integer> map = new HashMap<>();
        int answer = 1;
        
        for(String[] arr : clothes){
            map.put(arr[1], map.getOrDefault(arr[1], 0) + 1);
        }
        System.out.println(map);
        for(Integer value : map.values()){
            answer *= value + 1;
        }
        
        return answer - 1;
    }
}

0개의 댓글