본문 바로가기
개발/알고리즘

[프로그래머스/JAVA] 위장 - 해시

by zuzuu 2022. 2. 18.
반응형

 

 

이 문제는 HashMap에 put하는 부분이 완주하지 못한 선수 문제와 똑같다. 

먼저 HashMap에 옷의 종류별로 몇 개가 있는지 put 하도록 하자.

import java.util.HashMap;

class Solutio {
    public int solution(String[][] clothes) {
        int answer = 1;
        
        HashMap<String,Integer> hm = new HashMap<String, Integer>();
        
        for (int i=0; i<clothes.length; i++) {
        	hm.put(clothes[i][1], hm.getOrDefault(clothes[i][1], 0)+1);
        }
        
	    	
        for (String key : hm.keySet()) {
        	answer *= (hm.get(key) + 1);
        
        }
	    
        return answer-1;
    }
}

 

예제1의 데이터를 가지고 테스트를 해보면 HashMap에 아래와 같이 데이터가 담긴 것을 볼 수 있다.

eyewear:1
headgear:2

 

경우의 수를 구하는 문제로  eyewear가 1개, headgear가 2개 존재할 때 이를 조합하는 경우의 수는 eyewear x headgear로 2이다.

하지만 이 문제에선 eyewear만 착용하는 경우와 headgear만 착용하는 경우도 포함시켜야 하므로 (eyewear+1) x (headgear+1)로 6이다.

이렇게 계산할 경우 아무것도 입지 않는 경우가 포함되어 있기 때문에 마지막에 -1를 해주면 원하는 결과를 얻을 수 있다.

728x90
반응형

댓글