문제 풀이/프로그래머스

[프로그래머스] 의상(JAVA)

27200 2024. 4. 23. 21:58

https://school.programmers.co.kr/learn/courses/30/lessons/42578


풀이

public static int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String,Integer> map = new HashMap<>();
        for(int i = 0; i < clothes.length; i++){
            if(map.containsKey(clothes[i][1])){
                map.put(clothes[i][1],map.get(clothes[i][1]) + 1);
            }else{
                map.put(clothes[i][1], 1);
            }
        }

        for(Map.Entry<String, Integer> entry : map.entrySet()){
            answer *= entry.getValue()+1;
        }
        return answer - 1;
    }

 

백준에서 한번 본 문제라 간단하게 해결했다. 옷의 종류를 받고 키값이 없다면 1을, 있다면 +1을 하면서 해쉬맵을 채운다.

 

이후 경우의 수에 따라 +1을 한 값들을 곱해나간다.

ex) 상의 2가지, 하의 3가지면 -> 상의는 0,1,2 총 3개의 경우, 하의는 0,1,2,3의 4개의 경우기 때문에 이를 곱한 12가지가 된다.

다만 옷은 한가지는 입어야 하므로 0 끼리 선택된 1가지 경우를 제외한 11이 답이 된다.