[자료구조/알고리즘] 비트연산을 통한 순열

2021. 1. 11. 18:38·Algorithm/Algorithm

[Algorithm] Binary Counting - 부분집합, power set 구하기

void main(void){

    int i, j;

    char arr[4] = { 'a', 'b', 'c', 'd' };

    int n = 4;


    for (i = 0; i < (1 << (n)); i++){

        for (j = 0; j < n; j++){

            if (i & (1 << j)){

                printf("%c ", arr[j]);

            }

        }

        printf("\n");

    }

}

1<<n

  • 2n의 값을 갖는다.
  • 원소가 n개일 경우의 모든 부분집합의 수를 의미한다.
  • Power set(모든 부분 집합)
    -공집합과 자기 자신을 포함한 모든 부분집합
    -각 원소가 포함되거나 포함되지 않는 2가지 경우의 수를 계산하면 모든 부분집합의 수가 계산된다.

i & (1 << j)

  • 계산 결과는 i의 j번째 비트가 1인지 아닌지를 의미한다.
10 진수 이진수 {A, B, C, D}
0 0000  
1 0001 A
2 0010 B
3 0011 B, A
4 0100 C
5 0101 C, A
6 0110 C, B
7 0111 C, B, A
8 1000 D
9 1001 D, A
10 1010 D, B
11 1011 D, B, A
12 1100 D, C
13 1101 D, C, A
14 1110 D, C, B
15 1111 D, C, B, A

 

'Algorithm > Algorithm' 카테고리의 다른 글

118667. 두 큐 합 같게 만들기  (0) 2025.02.26
[자료구조/알고리즘] Eulerian circuit(한붓그리기)  (0) 2021.01.13
[자료구조/알고리즘] 재귀 함수를 이용한 부분 집합 생성 알고리즘  (0) 2021.01.06
[자료구조/알고리즘] 해시(Hash) 란?  (0) 2021.01.06
'Algorithm/Algorithm' 카테고리의 다른 글
  • 118667. 두 큐 합 같게 만들기
  • [자료구조/알고리즘] Eulerian circuit(한붓그리기)
  • [자료구조/알고리즘] 재귀 함수를 이용한 부분 집합 생성 알고리즘
  • [자료구조/알고리즘] 해시(Hash) 란?
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (209)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (14)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    준영속 엔티티
    AuthenticationSuccessHandler
    lower bounded wildcards
    minimum number of arrows to burst balloons
    Generic
    RR
    runner 기법
    OS
    JSCode
    Oauth2
    clone graph
    운영체제
    rotting oranges
    pacific atlantic water flow
    socar
    Process
    wildcards
    추상화 클래스
    트랜잭션
    LinkedList
    @JsonNaming
    Climbing Stairs
    제네릭
    디자인 패턴
    @JsonProperty
    fcfs
    algorithm
    BFS
    Reorder List
    Thread
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
[자료구조/알고리즘] 비트연산을 통한 순열
상단으로

티스토리툴바