프로그래밍/Python

프로그래머스_python lv0. 구슬을 나누는 경우의 수

O'bin 2023. 3. 2. 09:30

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

 

프로그래머스

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

programmers.co.kr

 

 

내 답안 : 

 

1
2
3
4
5
6
7
8
9
10
11
def solution(balls, share):
    #팩토리얼 구하는 함수 정의
    def factorial(n):
        fac = 1
        for i in range(1,n+1):
            fac *= i
        return fac
    
    # balls개 중에서 share개를 선택하는 경우의 수 
    answer = factorial(balls) / (factorial(balls - share)*factorial(share))
    return answer
cs

 

채점을 시작하자마자 왠지 파이썬에는 팩토리얼 구하는 라이브러리 있을 것 같은데..! 하는 생각이 들었다.

역시나 있었다. (아래 개선안에)

 

 

 

 

개선안 : 

 

1
2
3
import math
def solution(balls, share):
    return math.factorial(balls)/(math.factorial(balls-share)*math.factorial(share))
cs

 

math 라이브러리의 factorial 함수를 사용할 수 있다.

 

 

 

1
2
3
4
import math
 
def solution(balls, share):
    return math.comb(balls, share)
cs

 

factorial 함수만 있는 것이 아니라..!

반복과 순서 없이 n 개의 항목에서 k 개의 항목을 선택하는 방법의 수를 반환하는 comb 함수를 사용하면

다른 연산이 전혀 필요없다.

파이썬은 라이브러리와 함수들을 많이 아는 것도 중요한 것으로 보인다.

조만간 자주 쓰이는 라이브러리들을 찾아 정리해봐야겠다.