본문 바로가기
알고리즘

부분집합 알고리즘

by 스빠시빠 2019. 9. 7.
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

댓글