본문 바로가기
코딩테스트/프로그래머스

[프로그래머스] 해시 : 위장 Java

by 일상 속 둔치 2020. 9. 5.

 

사실상 경우의 수 문제이다. 이 문제가 해시 유형인 이유는 Key를 종류, Value를 종류의 옷 가지 수로 데이터를 다루라는 의도이지 않나 싶다.

 

문제의 핵심 내용은 다음과 같다.

 

모든 경우에서 아무것도 입지 않는 경우를 빼는 것이다.

 

즉, 모든 경우는 종류별 가지수(안 입는 경우를 고려해 1을 더하기!)를 전부 곱하는 것이고, 아무것도 입지 않는 경우 1을 빼주는 것이다.

 

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        
        HashMap<String, Integer> clothMap = new HashMap<>();
        
        for(String[] cloth : clothes){
            clothMap.put(cloth[1],clothMap.getOrDefault(cloth[1],0)+1);
        }
        
        for(Map.Entry<String, Integer> entry : clothMap.entrySet()){
            answer *= (entry.getValue()+1);
        }
        
        answer--;
        
        return answer;
    }
}

댓글