728x90
반응형

VER1.0

import sys

def backtracking():
    if len(s) == m:
        print(' '.join(map(str, s)))
        return
    for i in range(1, n+1):
        if visited[i] == True:
            # s.append(i)
            continue
        if visited[i-1] == True:
            s.append(i-1)
        s.append(i)
        backtracking()
        s.pop()
        visited[i] = False

n,m = map(int, sys.stdin.readline().split())
s = []

visited =[False for i in range(n+1)]

backtracking()

if visited[i-1] == True 이면 s에 추가시킨다.

 

VER2.0

itertools의 product 활용하여 풀기!

 

import itertools
import sys

n, m = map(int, sys.stdin.readline().split())
nums = [i for i in range(1, n+1)]

array4 = itertools.product(nums, repeat=m)
#중복된 조합 모두 포함 , 1 1 / 2 2 등 본인의 조합도 포함하기
#중복 순열 ==> 순열과는 다르게 같은 숫자를 중복하여 사용할 수 있다.
#(nums, repeat = m)
for i in array4:
    for j in i:
        print(j, end = ' ')
    print()

itertools의 product 활용하여 풀기!

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
반응형

+ Recent posts