카카오 문제(신고)보다 쉬운것 같다..^^
public class Programmers42578 {
//위장 https://school.programmers.co.kr/learn/courses/30/lessons/42578
public static int solution(String[][] clothes) {
HashMap<String,Integer> numOfClothes = new HashMap<>();
for (String[] clothe : clothes) {
String category = clothe[1];
//카테고리 저장
if(numOfClothes.get(category)==null){
//카테고리 별로 갯수 저장
numOfClothes.put(category,1);
continue;
}
numOfClothes.put(category,numOfClothes.get(category)+1);
}
int answer=1;
for (Integer i : numOfClothes.values()) {
//전체 경우의수 = 각각의 경우의수 +1 을 다 곱한 뒤 1을 뺌(전부 안선택하는 경우)
answer*=(i+1);
}
return answer-1;
}
public static void main(String[] args) {
String[][] a = {{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}};
System.out.println(solution(a));
}
}
Java
복사
카테고리별로 옷의 개수를 저장한다 (Hash Map 사용) 마지막 정답 내기가 오히려 더 어려운것 같다.
(카테고리별 옷 종류+1)을 각 카테고리별로 구해 곱해준 뒤 마지막으로 1을 빼주어야 한다.
옷을 입을수 있는 경우의수 = 옷 가지수 + 안입는 경우의 수
전체 경우의 수 = 각 카테고리 별 입을 수 있는 경우의 수를 곱한 수 - 아무것도 안입는 경우의 수