function powerSet(arr) {
const obj = {}
//This loop is to take out all duplicate number/letter
for (var i = 0; i < arr.length; i++) {
obj[arr[i]] = true;
}
//variable array will have no duplicates
const array = Object.keys(obj);
const result = [
[]
];
for (let i = 0; i < array.length; i++) {
//this line is crucial! It prevents us from infinite loop
const len = result.length;
for (let x = 0; x < len; x++) {
result.push(result[x].concat(array[i]))
}
}
return result;
}
알고리즘을 풀다보면 부분집합을 이용하는 유형이 많이 나온다. 기본적으로 부분집합 알고리즘은 숙지하고 있어야 한다.
'알고리즘' 카테고리의 다른 글
문자열 조작 1 - 재귀함수 (0) | 2019.10.21 |
---|---|
재귀 소개 및 DP의 맛 (0) | 2019.05.08 |
버블정렬? 뇌물의 횟수를 구하라! (feat. 새치기) (0) | 2018.11.09 |
특정 문자의 총 개수는? (0) | 2018.11.02 |
계곡의 개수는? (0) | 2018.11.01 |
댓글