백준 알고리즘 15649. N과 M(1)

2024. 3. 8. 22:09코딩 테스트/백준

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

 

15649번: N과 M (1)

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

www.acmicpc.net

 

전체 코드

def solution(n, m):
    results = []

    def dfs(path, cur_elements):
        if m == len(path):
            results.append(path)
            return

        for e in cur_elements:
            next_elements = cur_elements[:]
            next_elements.remove(e)
            dfs(path + [e], next_elements)

    dfs([], [i for i in range(1, n + 1)])

    return results


n, m = map(int, input().split())
nums_list = solution(n, m)
for nums in nums_list:
    p_str = ' '.join(map(str, nums))
    print(p_str)