Algorithm/백준
[백준] 15650 n과 m 2
sunnyshiny
2023. 3. 15. 20:00
728x90
https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
python, permutaion 모듈 활용한 코드
from itertools import permutations
n,m = map(int, input().split())
perm = permutations(range(1,n+1), m)
s = list()
for p in perm:
p = list(p)
p.sort()
if p in s:
continue
print(' '.join(map(str, p)))
s.append(p)
dfs 알고리즘을 활용한 코드
n, m = map(int, input().split())
back =[]
def dfs(start):
if len(back) == m:
print(' '.join(map(str, back)))
return
for i in range(start, n+1):
if i not in back:
back.append(i)
dfs(i+1)
back.pop()
dfs(1)
15649 n과 m 1문제와 다르게 permutation을 활용한 코드는 dfs보다 메모리만 더 차지 하였고 시간을 단축하지는 못했다.(동일한 시간)
728x90