코딩테스트/Lv2
[Python] 백준 온라인 저지 N과 M 시리즈(5) - 15654번
ggulgood
2022. 4. 30. 22:37
https://www.acmicpc.net/problem/15654
15654번: N과 M (5)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.
- N개의 자연수 중에서 M개를 고른 수열
[Python]
풀이 방법:
N개의 자연수 중에서 m개를 고른 수열이다.
중복되는 수열을 여러 번 출력하면 안되며 -> visited 초기화
수열은 사전 순으로 증가하는 순서로 출력
결과 리스트 out 을 할당하고 아래 방식으로 받아나갈 것
out.append(lists[i])
코드 :
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
lists = list(map(int, input().split()))
lists.sort()
visited = [0 for _ in range(n)] # 초기화
out = [] # 결과
def dfs(cnt):
if cnt == m:
print(' '.join(map(str, out)))
return
for i in range(n):
if visited[i] == 0:
visited[i] = 1
out.append(lists[i])
dfs(cnt+1)
out.pop()
visited[i] = 0
dfs(0)