[백준]N과 M(5)/15654번/Python/파이썬/백트래킹
💡문제
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.
- N개의 자연수 중에서 M개를 고른 수열
입력
첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)
둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.
출력
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
수열은 사전 순으로 증가하는 순서로 출력해야 한다.
예제입력1
3 1
4 5 2
예제출력1
2
4
5
예제입력2
4 2
9 8 7 1
예제출력2
1 7
1 8
1 9
7 1
7 8
7 9
8 1
8 7
8 9
9 1
9 7
9 8
📖내가 작성한 code
def DFS(L):
if L==m:
for x in res:
print(x,end=' ')
print()
else:
for i in range(n):
if ch[a[i]]==0:
ch[a[i]]=1
res[L]=a[i]
DFS(L+1)
ch[a[i]]=0
n,m=map(int,input().split())
a=list(map(int,input().split()))
a.sort()
res=[0]*m
ch=[0]*(a[-1]+1)
DFS(0)
문제 출처 : https://www.acmicpc.net/problem/15654
Author And Source
이 문제에 관하여([백준]N과 M(5)/15654번/Python/파이썬/백트래킹), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wjdtmdgml/백준N과-M515654번Python파이썬백트래킹저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)