https://programmers.co.kr/learn/courses/30/lessons/42578
문제
풀이
조합과 경우의 수는 다르다.
이 문제는 모든 경우의 수에서 한가지의 경우(모든 종류에 옷을 입지 않는 경우)만 제외시키면 된다.
import java.util.HashMap;
import java.util.Arrays;
/*정확성 테스트
테스트 1 〉 통과 (0.78ms, 76.7MB)
테스트 2 〉 통과 (0.56ms, 77.2MB)
테스트 3 〉 통과 (0.78ms, 73.2MB)
테스트 4 〉 통과 (0.52ms, 79.1MB)
테스트 5 〉 통과 (0.71ms, 78.9MB)
테스트 6 〉 통과 (0.47ms, 73.8MB)
테스트 7 〉 통과 (0.57ms, 76.8MB)
테스트 8 〉 통과 (0.73ms, 77.1MB)
테스트 9 〉 통과 (0.77ms, 77.9MB)
테스트 10 〉 통과 (0.55ms, 72.9MB)
테스트 11 〉 통과 (0.71ms, 86.8MB)
테스트 12 〉 통과 (0.63ms, 74MB)
테스트 13 〉 통과 (0.51ms, 70MB)
테스트 14 〉 통과 (0.57ms, 78MB)
테스트 15 〉 통과 (0.74ms, 82.3MB)
테스트 16 〉 통과 (0.50ms, 67.6MB)
테스트 17 〉 통과 (0.88ms, 72.6MB)
테스트 18 〉 통과 (0.73ms, 65.3MB)
테스트 19 〉 통과 (0.54ms, 78.2MB)
테스트 20 〉 통과 (0.52ms, 78.4MB)
테스트 21 〉 통과 (0.76ms, 71.9MB)
테스트 22 〉 통과 (0.55ms, 73.1MB)
테스트 23 〉 통과 (0.56ms, 76.2MB)
테스트 24 〉 통과 (0.74ms, 71.7MB)
테스트 25 〉 통과 (0.55ms, 71.2MB)
테스트 26 〉 통과 (0.48ms, 69.8MB)
테스트 27 〉 통과 (0.98ms, 71.2MB)
테스트 28 〉 통과 (0.61ms, 82.1MB)
*/
class Solution {
public static int solution(String[][] clothes) {
HashMap<String,Integer> map = new HashMap<String, Integer>();
// 종류별로 옷의 수를 map에 저장
Arrays.stream(clothes).forEach(c -> map.put(c[1], map.getOrDefault(c[1], 0)+1));
int res=1;
for(int i : map.values())
res *= i+1;
return res-1;
}
}
Value들의 곱은 모든 경우의 수를 구하는것이다.
Value의 +1의 곱은 옷을 선택 하지 않는 Case까지 고려하여 경우의 수를 구한 것이고,
결과값에서 -1을 해준건, 모든옷을 안입는 경우는 없기 때문에 , 해당 경우의 수를 빼준것이다
'Algorithm > 프로그래머스 고득점 Kit' 카테고리의 다른 글
[정렬] 가장 큰 수 - Java 풀이 (0) | 2021.07.24 |
---|---|
[정렬] K번째 수 - Java 풀이 (0) | 2021.07.24 |
[Hash] 베스트 앨범 - Java 풀이★★★ (0) | 2021.06.17 |
[Hash] 전화번호 목록 - Java 풀이 (0) | 2021.06.16 |
[Hash] 완주하지 못한 선수 - Java 풀이 (3가지 풀이 - map, set, 배열) (0) | 2021.06.16 |