위장

LJM·2023년 4월 17일
0

programmers

목록 보기
28/92

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

HashMap 을 사용해서 해결하였다.
키는 장착타입, 값은 가능한 상태의 숫자
예를들어 머리장착타입 모자A 하나 있다면. 2로 값을 세팅한다. 왜냐면 모자A이 없는 상태, 모자A 있는 상태 라서 그렇다.
머리장착타입 모자B 가 있다면 3로 값을 세팅한다. 모자A 모자B 둘다 없는상태, 모자A 있는상태, 모자B 있는상태 라서 그렇다.
이런식으로 타입별로 가능한 상태 숫자를 구하고 이 숫자들을 곱하고 -1을 하였다.
아무것도 장착하지 않은 상태는 빼줘야 하니까

그리고 모든 아이템들의 장착타입이 한가지만 있는경우는 아이템 개수가 곧 가능한 상태개수가 된다.

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 0;
        
        HashMap<String, Integer> map = new HashMap<>();
        
        for(int i = 0; i < clothes.length; ++i)
        {
            String curV = clothes[i][0];
            String curK = clothes[i][1];
            
            if(map.containsKey(curK))
            {
                map.put(curK, map.get(curK)+1);
            }
            else
            {
                map.put(curK, 2);
            }
        }
        int sum = 0;
        if(map.size() > 1)
        {
            Collection<Integer> values = map.values();
            for(int val : values)
            {
                if(sum == 0)
                    sum = val;
                else
                    sum *= val;
            }
            sum--;
        }
        else
            sum = clothes.length;
        
        return answer = sum;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글