백준(Python) 풀이/백트래킹

백준(Python) 15649번 N과 M (1) 풀이

개발윗미 2022. 11. 5. 19:26

Python으로 구현한 15649번 N과 M (1) 문제 풀이입니다.

 

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

 

15649번: N과 M (1)

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

www.acmicpc.net


n, m = map(int, input().split())

def permutations(arr, r) :
    for i in range(len(arr)) :
        if r == 1 :
            yield [arr[i]]
        else :
            for next in permutations(arr[:i] + arr[i+1:], r-1) :
                yield [arr[i]] + next

data = [i for i in range(1, n + 1)]
for value in permutations(data, m) :
    print(* value)

 

1. n과 m을 입력받아 1부터 n까지의 수를 data 리스트에 정의한다.

 

2. 순열(permutations)을 통해 각 경우의 수마다 m개의 수를 도출해내 해당 수들을 출력한다.