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

https://breakout-theworld.tistory.com/9

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

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
Share Link
reply
«   2024/10   »
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