본문 바로가기
프로그램/Python 1000제

Python 35제] N개 중에서 R개를 선택했을 때의 경우의 수를 구하는 프로그램을 작성하시오.

by 건티 2022. 2. 22.
728x90

출처 : 반크_독도의 날 포스터

 

참고풀이1] 반복문 사용한 경우의 수

def Combination(n,r):
    #nCr = n!/(r!(n-r)!)
    numerator=1 #분자부분
    for i in range(n,n-r,-1):
        numerator*=i
        
    denominator=1 #분모부분
    for i in range(r,0,-1):
        denominator*=i
        
    #결과
    result=numerator//denominator
    
    return result
    
#main 부분
N=int(input("전  체 개수를 입력하시오 : "))
R=int(input("선택할 개수를 입력하시오 : "))
print(f"\n{N}C{R} = {Combination(N, R)}")

 

참고풀이1 결과]

 

 

참고풀이2] 재귀호출을 사용한 경우의 수

def Combination(n,r):
    #nCr = n!/(r!(n-r)!)
    if r==0 or n==r:
        return 1
    else:
        return Combination(n-1, r) + Combination(n-1, r-1)
    
#main 부분
N=int(input("전  체 개수를 입력하시오 : "))
R=int(input("선택할 개수를 입력하시오 : "))
print("\n%dC%d = %d"%(N,R,Combination(10, 3)))

 

참고풀이2 결과]

 

 

참고풀이3] 최적화한 경우의 수

def Combination(n,r):
    #nCr = n!/(r!(n-r)!)
    #nC(r-1) = n!/((r-1)!(n-r+1)!)
    #nCr = n!/((r-1)!(n-r+1)!)*((n-r+1)/r)
    if r==n:
        return 1
    elif r==1:
        return n;
    else:
        return Combination(n, r-1) * (n-r+1)//r
    
#main 부분
N=int(input("전  체 개수를 입력하시오 : "))
R=int(input("선택할 개수를 입력하시오 : "))
print("\n{0}C{1} = {2}".format(N,R,Combination(N, R)))

 

참고풀이3 결과]

 

 

 

대한민국의 아름다운 영토, 독도의 여름

 

반응형

댓글