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

중복순열 구하기(DFS)

by ppirae 2022. 4. 2.

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

https://inf.run/Wa5t

 

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

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

www.inflearn.com

#강의 풀이
def DFS(L):
    global res, cnt
    if L == m:
        for i in res:
            print(i, end = ' ')
        print()
        cnt += 1
    else:
        for i in range(1, n+1):
            res[L] = i
            DFS(L+1)

if __name__ == "__main__":
    n, m = map(int, input().split())
    res = [0] * m
    cnt = 0
    DFS(0)
    print(cnt)

res 는 중복순열을 저장하는 배열

cnt는 중복순열의 개수를 저장하는 변수

 

1부터 숫자가 시작하기때문에

for 문을 1부터 n+1의 범위로 하여

res 배열에 추가한다.

 

DFS를 진행해 L = level 이 n에 도착하면 출력한다.

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

순열 구하기 (DFS)  (0) 2022.04.02
동전 교환 (Cut Edge Tech)  (0) 2022.04.02
바둑이 승차 (Cut Edge Tech)  (0) 2022.04.01
합이 같은 부분집합 (DFS)  (0) 2022.04.01
부분집합 구하기 (DFS)  (0) 2022.04.01

댓글