728x90
요구사항
의상 이름, 의상 종류로 이루어진 2차원 배열이 들어왔을 때
서로 다른 옷의 조합 수를 구한다.
주의사항
- 같은 종류의 의상을 입을 수 없다. 종류는 1가지씩!
- 최소 한 개의 의상을 입는다.
- 이름이 같은 의상은 없다.
코드
'usestrict';
function calculateCombination(hashmap) {
let result = 1;
hashmap.forEach((element) => {
result *= element + 1;
});
return result - 1;
}
function setHashmap(array) {
let hashMap = new Map();
array.forEach((element) => {
let key = element[1];
if (hashMap.get(key) == undefined) {
hashMap.set(key, 1);
} else {
hashMap.set(key, hashMap.get(key) + 1);
}
});
return hashMap;
}
function solution(clothes) {
let clothHashmap = setHashmap(clothes);
return calculateCombination(clothHashmap);
}
clothHashmap은 의상 종류를 Key로 하고, 개수를 Value로 하는 map이다.
의상 조합을 구할 때 의상을 입지 않을 경우가 있기 때문에 의상 종류의 개수 + 1을 곱한다.
최소 한 개의 의상을 입기 때문에 아무것도 입지 않은 경우(1개)를 뺀다.
복잡도
시간복잡도 : O(N)
공간 복잡도 : O(1)??
후기
저번 문제와 달리 hash를 사용해서 풀었다.
Combination 구하는걸 조금 헤맸다.
조합에 대해 공부가 필요하다.
반응형
'개발공부 > Problem Solving' 카테고리의 다른 글
[프로그래머스 고득점 Kit] 완주하지 못한 선수 (0) | 2022.01.03 |
---|