알고리즘 & 자료구조/해시

[프로그래머스 알고리즘 고득점 Kit][해시][Java] 의상

수수다 2026. 2. 22. 20:00

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


1. 정답 풀이

각 의류 타입의 갯수를 센다.
하나의 타입을 여러개 입지 못하니까 그 타입이 가질 수 있는 경우의 수는 안입는다 1번을 입는다, 2번을 입는다. ... 이렇게 된다.
안입는다를 포함해서 갯수 + 1을 
타입별로 전부 곱하면 전체 경우의 수가 나온다.

import java.util.*;

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