알고리즘
백준_15649_N과 M(1)
매화of사군자
2020. 1. 13. 21:21
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다.
www.acmicpc.net
해결 방법 : 문제 설명을 보면 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열을 구하는 문제인 것을 알 수 있다.
이것을 잘 생각해보면 학창시절에 배웠던 수학이 하나 떠오르는데 그것은 바로 "서로 다른 N개에서 M개를 구하는 방법 즉 "순열"" 이다. 파이썬에서 순열을 구하는 permutation 함수가 존재한다. 그것을 이용하여 풀었다.
코드
더보기
import itertools
a, b = map(int, input().split())
table = []
for i in range(a):
table.append(str(i+1))
p_list = list(map(' '.join, itertools.permutations(table,b)))
for i in p_list:
print(i)