티스토리 뷰

Problem solution

중복순열 구하기

dev_jun 2022. 7. 27. 11:44

문제

  • 1~N까지 번호 적힌 구슬
  • 중복을 허락하여 M번 뽑아 일렬로 나열하는 방법을 모두 출력

my_solution

from itertools import product

n, m = map(int, input().split())
lists = [i for i in range(1, n + 1)]
cnt = 0

for i in product(lists, repeat=m):
    print(*i, sep=" ")
    cnt += 1
print(cnt)
  • 중복을 허락하여 모든 조합을 나열해야하기에 product 사용

soltuion

n, m = map(int, input().split())
res = [0] * m
cnt = 0


def recursive(level):
    global cnt
    if level == m:
        for j in range(m):
            print(res[j], end=" ")
        print()
        cnt += 1
    else:
        for i in range(1, n + 1):
            res[level] = i
            recursive(level + 1)


recursive(0)
print(cnt)
  • DFS를 연습하기 위해 재귀적으로 구현한 방법

'Problem solution' 카테고리의 다른 글

순열 구하기  (0) 2022.07.28
동전 교환  (0) 2022.07.27
바둑이 승차  (0) 2022.07.26
합이 같은 부분집합  (0) 2022.07.26
최소힙  (0) 2022.07.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함