https://www.acmicpc.net/problem/15654
문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.
N개의 자연수 중에서 M개를 고른 수열
앞에서는 1부터 N까지의 자연수였다면 이번에는 수열을 줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n,m = map(int,input().split())
num_list = list(map(int,input().split()))
num_list.sort()
arr = [0]*m
isused = [False]*(max(num_list)+1)
def func(k):
if k==m:
for i in range(m):
print(arr[i], end=' ')
print()
return
for j in num_list:
if not isused[j]:
arr[k]=j
isused[j] = True
func(k+1)
isused[j] = False
func(0)
수열을 받고 오름차순으로 정렬을 해줍니다. 그리고 for문에서 리스트를 사용하면 리스트의 순서대로 들어갑니다.
Comments powered by Disqus.