본문 바로가기

문제 풀이/Programmers

[프로그래머스] 위장 (JAVA)

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 위장

 

programmers.co.kr


[풀이]

1. HashMap에 옷의 종류별로 개수를 저장해준다.

2. 옷마다 저장된 수 + 1을 곱해준다. << 선택하지 않는 경우의 수

3. 모든 경우를 구하고 나면, 아무것도 선택하지 않는 경우의 값을 1개 빼준다.

[접근]

1. 옷의 종류를 선택하는 경우의 수들을 곱해서 아무것도 선택하지 않는 경우 1가지를 빼주면 되겠다고 생각하였다.

[코드]

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        
        HashMap<String, Integer> map = new HashMap<>();
        
        for (String[] str : clothes) {
            String type = str[1];
            
            if (map.containsKey(type))
                map.put(type, map.get(type) + 1);
            else
                map.put(type, 1);
        }
        
        Iterator<Integer> it = map.values().iterator();
        
        int answer = 1;
        
        while(it.hasNext())
            answer *= it.next().intValue() + 1;
        
        return answer - 1;
    }
}