[프로그래머스] Lv 0 구슬을 나누는 경우의 수 - Python

2022. 12. 25. 18:26·Programming/알고리즘
728x90

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/120840

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.


2. 제한사항


3. Python code

조합(combination) 문제다.

친절하게 힌트까지 제공 됨!

nCm

 

def fac(num):
    a = 1
    for i in range(1, num+1):
        a *= i
    return a

def solution(balls, share):
    answer = 0
    n = fac(balls)
    m = fac(share)
    nm = fac(balls-share)
    
    answer = n / (nm * m)
    
    return answer

직접 factorial 함수를 구현해서 한 방법이다.

재귀함수를 써도 되지만 재귀함수 사용하면 runtime error가 떠서 for문 사용했다.

 

from math import factorial as fac

def solution(balls, share):
    n = fac(balls)
    m = fac(share)
    nm = fac(balls-share)
    
    answer = n/(nm*m)
    
    return answer

math 라이브러리에 있는 factorial 사용해 푼 코드

 

import math

def solution(balls, share):
    return math.comb(balls, share)

파이썬 답게 math 라이브러리에 있는 combination을 이용한 코드

저작자표시 비영리 변경금지 (새창열림)
'Programming/알고리즘' 카테고리의 다른 글
  • [프로그래머스] Lv 0 팩토리얼 - Python
  • [프로그래머스] Lv 0 2차원으로 만들기 - Python
  • [프로그래머스] Lv 0 모스부호 (1) - Python
  • [프로그래머스] Lv 0 개미 군단 - Python
해치
해치
뭐라도 하자
  • 해치
    hi there
    해치
  • 글쓰기 관리자
  • 전체
    오늘
    어제
    • ALL (70)
      • Programming (62)
        • Python (14)
        • SQL (13)
        • 알고리즘 (35)
      • Framework (4)
        • Airflow (3)
        • Django (1)
      • Infra (3)
        • Docker (3)
        • Linux (0)
      • AWS (0)
      • Dashboard (1)
  • 블로그 메뉴

    • 링크

    • 인기 글

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    해치
    [프로그래머스] Lv 0 구슬을 나누는 경우의 수 - Python
    상단으로

    티스토리툴바