코테 준비-문제풀기

프로그래머스 - 위장 /해쉬/자바 java

FireStone 2020. 10. 23. 00:45

HashMap을 사용해서 category별로 몇 개가 있는지를 저장해주었다.

솔직히 여기까지는 괜찮은데 식을 어떻게 세워야할지가 문제였다..

이건 분명 식을 세워야하는데 바로 떠오르지 않았다..

 

식은

카테고리별 옷의 개수+1 을 해서 다 곱해주고 마지막에 -1을 하는 것인데

예를 들면

상의가 파랑.빨강이 있고

하의가 보라, 초록이 있다고 하자

 

상의는 -> 안입을 경우, 파랑, 빨강으로 3가지다.

하의는 -> 안입을 경우, 보라, 초록으로 3가지다.

그래서 3 x 3을 해주고, 둘다 안입을 경우는 없으니까 1을 빼준다.

그럼 완성

 

 

import java.util.HashMap;
class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String,Integer> map = new HashMap<String,Integer>();
        for(int i=0;i<clothes.length;i++){
            if(map.containsKey(clothes[i][1])){
                map.replace(clothes[i][1], map.get(clothes[i][1])+1);
            }
            else{
                map.put(clothes[i][1],1);
            }
        }
        
        for(int value: map.values()){
            answer*=(value+1);
        }
        answer-=1;
       
        
        return answer;
    }
}