View
문제 설명
머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
제한사항
- 1 ≤ balls ≤ 30
- 1 ≤ share ≤ 30
- 구슬을 고르는 순서는 고려하지 않습니다.
- share ≤ balls
입출력 예ballsshareresult
3 | 2 | 3 |
5 | 3 | 10 |
입출력 예 설명
입출력 예 #1
- 서로 다른 구슬 3개 중 2개를 고르는 경우의 수는 3입니다.
입출력 예 #2
- 서로 다른 구슬 5개 중 3개를 고르는 경우의 수는 10입니다.
Hint
- 서로 다른 n개 중 m개를 뽑는 경우의 수 공식은 다음과 같습니다.
나의 풀이
import math
solution = lambda balls, share: math.factorial(balls) / (math.factorial(balls-share) * math.factorial(share))
다른 풀이
조합을 이용한 풀이!!
조합이란 : n개에서 서로다른 m개를 뽑는 방법!(순서 상관 X)
import math
def solution(balls, share):
return math.comb(balls, share)
팩토리얼 ( ! )
팩토리얼이란 서로 다른 n개를 나열하는 경우의 수를 의미합니다. 기호로는 n! 이렇게 쓰고 계산은 n부터 1씩 줄여나가면서 1이 될때까지의 모든 수를 곱합니다.
import math
=> math.factorial()
순열 ( nPr )
순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 있음)
import itertools
=> itertools.permutations
조합 ( nCr )
조합이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 없음)
=> math.comb()
중복 순열 ( nπr )
중복 순열이란 중복 가능한 n개중에서 r개를 선택하는 경우의 수를 의미합니다. (순서 상관 있음)
Reference
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
programmers) 캐릭터의 좌표 (1) | 2022.11.10 |
---|---|
programmers) 문자열 계산하기 (0) | 2022.11.10 |
programmers) 영어가 싫어요 (0) | 2022.11.10 |
programmers) 종이 자르기 (0) | 2022.11.10 |
programmers) 소인수분해 (0) | 2022.11.10 |
reply