[백준 파이썬 15650번]N과M_2★백트래킹★매개변수 고려
2022. 10. 25. 16:21
728x90
반응형
VER1.0
import sys
def dfs(start):
if len(s) == m:
print(' '.join(map(str , s)))
return
for i in range(start, n+1):
if visited[i]:
continue
visited[i] = True
s.append(i)
dfs(i+1)
s.pop()
visited[i] = False
n,m = map(int , sys.stdin.readline().split())
s = []
visited = [False for i in range(n+1)]
dfs(1)
기존코드에 start변수 추가
start 매개변수를 추가하면서
재귀함수 실행시 1씩 올라가게끔 실행
VER 2.0
import itertools
import sys
n, m = map(int, sys.stdin.readline().split())
nums = [i for i in range(1, n+1)]
array2 = itertools.combinations(nums,m) #중복된 조합 모두 포함
for i in array2:
for j in i:
print(j, end = ' ')
print()
itertools의 combinations 모듈 활용하기
import itertools
import sys
n, m = map(int, sys.stdin.readline().split())
nums = [i for i in range(1, n+1)]
array = itertools.permutations(nums, m) #중복된 조합은 제외
#itertools의 permutations함수를 사용해서 풀이
#Permutations 는 배열에서 원하는 길이에 맞는 모든 조합을 구하는 함수이다.
for i in array:
for j in i:
print(j, end = ' ')
print()
print('=======================')
array2 = itertools.combinations(nums,m) #중복된 조합 모두 포함
for i in array2:
for j in i:
print(j, end = ' ')
print()
print('=======================')
array3 = itertools.combinations_with_replacement(nums,m)
#중복된 조합 모두 포함 , 1 1 / 2 2 등 본인의 조합도 포함하기
#(nums, m)
for i in array3:
for j in i:
print(j, end = ' ')
print()
728x90
반응형
'Python(백준) > 백트래킹' 카테고리의 다른 글
[PYTHON]_코테에서도 쓰일_조합_계산_파스칼의 삼각형_시간복잡도(이항정리, 이항계수) 사용하기!! (0) | 2022.12.22 |
---|---|
[Python] 순열, 조합, 중복순열, 중복조합(itertools이용한 백트래킹) (0) | 2022.10.25 |
[백준 파이썬 15652번]N과M_4★백트래킹★visited리스트 앞부분 고려 (0) | 2022.10.25 |
[백준 파이썬 15651번]N과M_3★백트래킹★visited리스트 앞부분 고려 (0) | 2022.10.25 |
[백준 파이썬 15649번]N과M★백트래킹★ (0) | 2022.10.25 |