Java/Programmers

[Lv.2]위장

GLOWWW 2023. 2. 14. 15:31

위장은 예전에 한번 풀었던 문제였다.. 쉬워서 도전해봤던 문제..
우선 HashMap<String, Integer>를 생성한다. 주어진 입력은 2차원 배열의 String이다. 그 중, 항상 clothes[i][1]번째에는 의상의 카테고리가 주어진다. 이 카테고리를 HashMap에 put하여, 중복된 카테고리가 나올 때 마다 Integer를 1++ 해준다.
그 후, 경우의 수를 구하는 방법으로 answer값을 계산 후 return해주면 된다.

package Lv_2;

import java.util.HashMap;

public class 위장 {
    public static int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String, Integer> box = new HashMap<>();
        for (int i = 0; i < clothes.length; i++) {
            box.put(clothes[i][1], box.getOrDefault(clothes[i][1], 0) + 1);
        }
        for (int cnt : box.values()) {
            answer *= cnt;
        }
        return answer - 1;
    }

    public static void main(String[] args) {
        String[][] clothes = new String[][]{{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}};
        int result = solution(clothes);
    }
}