알고리즘/알고리즘 개념

순열을 구해보자. (중복 순열과 그냥 순열)

개발자 덕구🐾 2022. 7. 19. 14:03
728x90

중복(허용) 순열 : 

def dfs(L) :
    if L == m :
        for i in range(m) :
            print(mp[i],end = "")
        print()
    else :
        for i in range(1,n+1) :
                mp[L] = i
                dfs(L+1)
 
            
if __name__=="__main__" :
    n,m = map(int,input().split())
    check = [0]*(n+1)
    mp = [0]*m
    dfs(0)

3 2을 입력할 시

 

 

이렇게 출력된다. 

중복을 허용하여 1~3까지의 수 중 2자리수가 나오는 것이다. 

 

 


 

 

 

순열 : 

def dfs(L) :
    if L == m :
        for i in range(m) :
            print(mp[i],end = "")
        print()
    else :
        for i in range(1,n+1) :
            if check[i] == 0 :
                check[i] = 1
                mp[L] = i
                dfs(L+1)
                check[i] = 0
                

if __name__=="__main__" :
    n,m = map(int,input().split())
    check = [0]*(n+1)
    mp = [0]*m
    dfs(0)

3 2를 입력할 시 밑 사진처럼 출력된다.

check배열을 이용해 이미 mp에 있는 값은 출력하지 않도록 만들었기 때문이다.

 

 

반응형