프로그래머스 - 위장
https://school.programmers.co.kr/learn/courses/30/lessons/42578
import java.util.Map; import java.util.HashMap; class Solution { public int solution(String[][] clothes) { int answer = 1; Map<String, Integer> map = new HashMap<>(); for(String[] clothArray : clothes) map.put(clothArray[1], map.getOrDefault(clothArray[1], 0) + 1); for (String key : map.keySet()) answer *= map.get(key)+1; return (answer-1); } }
경우의 수를 구하는 공식만 알면 쉽게 풀 수 있을 문제다.
곱의 법칙 : 두 사건 A, B에 대하여 사건 A가 일어나는 경우의 수가 m이고, 그 각각에 대하여 사건 B가 일어나는 경우의 수가 n이면 두 사건 A, B가 연이어 일어나는 경우의 수는 m*n 이다.
착용하지 않는 경우까지 포함해 각 의상의 종류 수에 +1하여 모든 경우의 수를 곱하고, 아무것도 착용하지 않은 상태를 제외하기 위해 -1 한다.