[Baekjoon] 2225. 합분해
·
코딩테스트/Python
🔗 Problem Linkhttps://www.acmicpc.net/problem/2225❔Thinking0부터 N까지의 숫자를 중복하여 K개 뽑아서, 합이 N이 되는 경우의 수를 반환한다.계산의 순서가 다르면 다른 경우로 생각한다. (ex - 1+2, 2+1은 다른 경우)💻SolutionN, K = map(int, input().split())a,b = 1,1for i in range(1, K): a *= N + i b *= iprint((a // b) % 1000000000)🗝️keypoint합이 N이어야 하기 때문에, 공 N개를 K-1개의 칸막이로 구분짓는 경우와 같다고 생각할 수 있다.(n-1+r)! // (n-1)! * (r)!  인 중복 조합의 공식에 대입하면 (N+K-1)! ..
순열과 조합
·
Python 활용하기
1. 중복을 허용하지 않는 경우 1 - 1. 순열 (permutations) $${}_n{\rm P}_r = \frac{n!}{(n-r)!}$$ - p개 중에서 중복을 허용하지 않고 r개를 뽑아 나열하는 경우의 수 - 나열하기 때문에 순서가 다르면 다른 경우로 취급한다. from itertools import permutations a = [1,2,3,4,5] b = list(permutations(a, 2)) # a에서 2개를 뽑아 나열하는 경우 print(b) [(1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 4), (3, 5), (4, 1), (4, 2), (4, 3), (4, 5), (5, 1),..