[프로그래머스] 42578번 : 위장

이도은·2022년 1월 16일
0


코드

import java.util.HashMap;

public class PRO_42578 {
    public static int solution(String[][] clothes) {
        int answer = 1;

        HashMap<String, Integer> map = new HashMap<>();

        for (int i = 0; i < clothes.length; i++) {
            map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0) + 1);
        }

        // keySet() : key 값만 출력
        for (String key : map.keySet()) {
            answer *= (map.get(key) + 1);
        }

        answer -= 1;
        return answer;
    }

    public static void main(String[] args) {
        String[][] clothes = {{"yellowhat", "headgear"}, {"bluesunglasses", "eyewear"}, {"green_turban", "headgear"}};

        System.out.println(solution(clothes));
    }
}

풀이 및 느낀점

해시와 경우의 수를 생각하여 문제에 접근했다. answer를 1로 초기화한 이유는 값들을 곱하기 위함이다. 해시맵을 생성하여 옷 종류를 해시에 저장했다. 같은 종류는 value 값을 1 증가해주고, 같은 종류가 없다면 해시맵에 새로 key를 추가했다. 그 후, 종류별 개수를 모두 곱하여 총 경우의 수를 구했다. (map.get(key) + 1)에서 +1을 추가한 이유는 그 종류의 옷을 입지 않는 경우까지 더해주기 위함이다. 마지막에 answer를 리턴할때 -1을 해준 이유는 어떠한 옷도 입지 않은 경우의 수를 없애기 위함이다.


참고자료

0개의 댓글