본문 바로가기
알고리즘 (Python)

부분집합 구하기 (DFS)

by ppirae 2022. 4. 1.

인프런 김태원님의 파이썬 알고리즘 문제풀이를 듣고 작성한 글입니다.

https://inf.run/iJeD

 

파이썬 알고리즘 문제풀이 (코딩테스트 대비) - 인프런 | 강의

파이썬을 이용한 코딩테스트 문제풀이를 합니다., - 강의 소개 | 인프런...

www.inflearn.com

풀이 방법을 잘 모르겠어서 강의를 봤다.

 

#강의 풀이
def 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)

여기서 DFS[v+1] 은 원소를 사용하는것과 안하는것 두가지 길로 나뉘는 것이다.
그래서 사용하는 것을 체크하기위한 배열 ch 를 선언하고
배열의 값이 1인 것의 인덱스만 출력하면 부분집합이 된다.

어렵다. 비슷한 문제를 풀어봐야할것같다.

'알고리즘 (Python)' 카테고리의 다른 글

바둑이 승차 (Cut Edge Tech)  (0) 2022.04.01
합이 같은 부분집합 (DFS)  (0) 2022.04.01
응급실(큐)  (0) 2022.03.30
후위 표기식 만들기(스택)  (0) 2022.03.30
쇠막대기(스택)  (0) 2022.03.30

댓글