파이썬 알고리즘

[파이썬] 백준 15649 N과 M (1)

뜻 지, 깨달음 오 2022. 12. 6. 18:59

https://www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

이 문제를 풀때 가장 주의해야할 점은  1 2랑 2 1이 각각 다른 경우라는 것이다.

즉, 매번 used배열 값을 초기화해야한다.

 

 

 

 

<전체풀이>

N, M = map(int, input().split())
arr = list(range(1, N+1))
used = [0]*N
path = [0]*M
def rcr(level):

    if level == M:
        print(*path)
        return

    for i in range(N):
        if used[i] == 1:
            continue
        used[i] = 1
        path[level]=arr[i]
        rcr(level+1)
        path[level] = 0
        used[i] = 0

rcr(0)