프로그래머스 - 위장 / Level 2 / Java

Young Hun Park·2023년 2월 15일
0

문제 📋

프로그래머스 - 위장

풀이 📝

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        
        HashMap<String, List<String>> clothMap = new HashMap<>();
        
        for (int i=0; i<clothes.length; i++) {
            List<String> clothNames = new ArrayList<>();
            clothMap.put(clothes[i][1], clothNames);
        }
        
        for (int i=0; i<clothes.length; i++) {
            clothMap.get(clothes[i][1]).add(clothes[i][0]);
        }
        
        for (String key : clothMap.keySet()) {
            List<String> clothNames = clothMap.get(key);
            answer *= clothNames.size() + 1; // 안고르는 경우가 있기 때문에 +1해서 서로 곱한다.
        }
        return answer-1; // 아무옷도 안입는 경우는 제외한다.
    }
}

여러 옷의 종류가 있고 여러 옷들이 하나의 종류에 속한다.
해당 상황에서 스파이가 입을 수 있는 옷의 경우의 수를 구하는 문제이다.

먼저 HashMap을 만들어서 다음과 같은 형태로 데이터들을 재구성했다.

Key : 옷의 종류, Value : 옷 이름 리스트

그런 다음 모든 경우의 수를 구하기 위해
각 옷의 종류에 속하는 옷 갯수들을 전부 곱해야 하는데
옷을 안고르는 경우도 고려해야 되기 때문에 +1 해서 곱해주었다.

또한 스파이가 최소한 1개의 옷은 입는다는 조건이 있기 때문에
마지막에 1를 빼줘야한다.

profile
개발자에게 유용한 지식

0개의 댓글