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개의 수를 도출해내 해당 수들을 출력한다.
'백준(Python) 풀이 > 백트래킹' 카테고리의 다른 글
백준(Python) 2529번 부등호 풀이 (0) | 2022.10.04 |
---|---|
백준(Python) 2580번 스도쿠 풀이 (0) | 2022.08.31 |
백준(Python) 2661번 좋은수열 풀이 (0) | 2022.08.27 |