Problem Solving/백준

[BOJ 백준] 15651번 : N과 M(3) - Python

돌돌김 2021. 1. 3. 00:20

www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

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

www.acmicpc.net

백트래킹을 연습하기 위해 내장 함수를 사용하지 않고 직접 함수를 구현해서 문제를 풀었다

N과 M(3)는 중복순열을 구하는 문제이다.

순열을 구하는 것과 크게 차이는 없고 중복된 값을 따로 체크하지 않기 때문에 따로 체크할 부분은 없다.

 

소스코드

 

n, m = map(int, input().split())
result = []
def dfs(count):
    if count == m:
        print(*result)
        return
    for i in range(1,n+1):
        result.append(i)
        dfs(count+1)
        result.pop()

dfs(0)