본문 바로가기
문제풀이/Programmers 문제풀이

[ 알고리즘 ] 코딩 - Programmers - 위장.java

by 마늘아빠 2021. 1. 15.
728x90
반응형

문제 링크

programmers.co.kr/learn/courses/30/lessons/42578

 

코딩테스트 연습 - 위장

 

programmers.co.kr


* 프로그래머스 - Level 2 - (자바)위장 - HashMap과 수학적 조합의 이용

입출력 예


< 로직 >

* 수학적 조합을 이용해서 경우의 수를 구한다.

* 여기서 선택을 안하는 경우도 생각 해야하므로 1가지씩 경우를 추가해준다.

* 모두 선택을 하지 않는 경우도 있으므로 중복 -1을 제거해준다.


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

class Solution {
    public int solution(String[][] clothes) {
        	int n = clothes.length;
	    	
	    	HashMap<String, Integer> map = new HashMap<>();
	    	
	    	for(int i = 0; i < n; i++) {
	    		if(map.containsKey(clothes[i][1]))
	    			map.put(clothes[i][1], map.get(clothes[i][1]) + 1);
	    		else 
	    			map.put(clothes[i][1], 2); // 선택안함을 생각해서 만들 때 2로 준다.
	    	}
	    	
	        int answer = 1;
	        
	        for(String key : map.keySet()) {
	        	answer *= map.get(key);
	        }
	        
	        return answer-1;
    }
}
반응형