https://school.programmers.co.kr/learn/courses/30/lessons/42578
문제
의상의 종류와 의상의 이름이 주어졌을 때, 각 의상들로 조합할 수 있는 경우의 수, 이때 그 종류의 의상을 입지 않을 수 있으며, 다 입지 않는 경우는 존재하지 않음.
풀이
경우의 수를 따지자. 이 때 안 입는 경우도 계산해야 하니,
만약 종류가 a b c가 있을때 각 수에다 +1을 하여 그 종류를 안입는 경우도 따지게 하자.
그렇게 하여 각 종류의 수를 곱한 뒤 다 입지 않는 경우를 고려해 -1을 한 값이 정답이다.
소감
19분 컷. 사실 이것도 Entry가 import java.util.Map.Entry;를 해야한다는 것에서 해맸지 나머지는 쉬웠다.
방법 생각만 한다면 10분대 초반일 것이다. 그러니 자동완성이 없으니 어디서 무슨 클래스가 있는지를 기억하자.
코드
import java.util.*;
import java.util.Map.Entry;
class Solution {
public int solution(String[][] c) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<c.length; i++){
if(map.containsKey(c[i][1])){
int cnt = map.get(c[i][1]);
map.put(c[i][1], ++cnt);
continue;
}
map.put(c[i][1], 2);
}
for(Entry<String, Integer> entry : map.entrySet()) {
int cnt = entry.getValue();
answer *= cnt;
}
System.out.println(map);
return answer-1;
}
}