BOJ

백준 15649. N과 M (1) [Python]

Hoo_Dev 2022. 6. 3. 16:04
 

15649번: N과 M (1)

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

www.acmicpc.net

def recur(lev):
    if lev == M:
        print(*path)
        return
    for i in range(N):
        if visited[i] == 0:
            visited[i] = 1
            path.append(i+1)
            recur(lev+1)
            path.pop()
            visited[i] = 0

N, M = map(int, input().split())
path = []
visited = [0] * N
recur(0)

level = 2, branch = 4 인 재귀를 이용하여 풀이.

같은 숫자가 반복하여 등장하면 안되기 때문에 visited를 이용하여 방문표시를 해주고, 해당 결과값이 return 됐을 경우 다시 초기화 시켜줌