티스토리 뷰

알고리즘/코딩테스트 공부

8-4. 부분 집합 구하기(DFS)

YG - 96년생 , 강아지 있음, 개발자 희망 2022. 3. 24. 04:38

문제

자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 을 작성하세요.

풀이

function solution(n) {
  let answer = [];
  let ch = Array.from({ length: n + 1 }, () => 0);
  console.log(ch);
  function DFS(V) {
    if (V === n + 1) {
      let tmp = "";
      console.log(ch);
      for (let i = 1; i <= n; i++) {
        if (ch[i] === 1) tmp += i + " ";
      }
      if (tmp.length > 0) answer.push(tmp.trim());
      console.log(tmp);
    } else {
      ch[V] = 1;
      DFS(V + 1);
      ch[V] = 0;
      DFS(V + 1);
    }
  }

  DFS(1);
  return answer;
}

console.log(solution(3));

재귀함수 로직 구조

 

재귀함수 ch 배열을 통한 조합 구성(그림을 잘 못그립니다.)

 

'알고리즘 > 코딩테스트 공부' 카테고리의 다른 글

8-6. 바둑이 승차(DFS)  (0) 2022.03.24
8-5. 합이 같은 부분 집합(DFS : 아마존 인터뷰)  (0) 2022.03.24
8-2. 이진수 출력(재귀)  (0) 2022.03.24
7-2 버블정렬  (0) 2022.03.03
7-1 선택정렬  (0) 2022.03.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함