❗[알고리즘]부분집합구하기

김도연·2024년 1월 22일

알고리즘

목록 보기
37/56

문제

자연수 N이 주어지면 1부터 N까지의 원소를 갖는 집합의 부분집합을 모두 출력하는 프로그램 을 작성하세요.
▣ 입력설명
첫 번째 줄에 자연수 N(1<=N<=10)이 주어집니다.
▣ 출력설명
첫 번째 줄부터 각 줄에 하나씩 부분집합을 아래와 출력예제와 같은 순서로 출력한다. 단 공집합은 출력하지 않습니다.

입력예제1

3

출력예제1

1 2 3
1 2
1 3
1
2 3
2
3

[해설코드]

vdef DFS(v):
    if v==n+1:
        for i in range(1,n+1):
            if ch[i]==1:
                print(i,end=' ')
        print()
    else:
        ch[v]=1
        DFS(v+1)
        ch[v]=0
        DFS(v+1)



if __name__=="__main__":
    n=int(input())
    ch=[0]*(n+1)
    DFS(1)
  1. ch[0]이면 방문하지않음, ch[1]이면 방문하였음을 표시한다.
  2. 종료조건은 n+1일 때 종료.

0개의 댓글