백준 17213.과일 서리

이상·2024년 5월 17일

알고리즘

목록 보기
12/21

Silver2 문제
17213.과일 서리

처음에는 '쉽군 ㅋㅋ' 하면서 함수를 만들어 풀었는데 시간초과가 되었다 ㅜㅜ

from itertools import combinations
n=int(input())
m=int(input())
nums=list(range(n))
ans=[]
answer=0
def back(start):
    global answer
    if len(ans)==m-n:
        answer+=1
        return
    for i in range(start,n):
        ans.append(i)
        back(i)
        ans.pop()
back(0)
print(answer)

중복조합 공식을 이용해서 풀어야 했다.
n : 선택지의 개수
k : 중복을 허용해서 선택할 개수, 여기서는 m에서 과일종류수를 뺀 나머지

nHk = (k+n-1)!/k!(n-1)!

정답코드는

import math
n=int(input())
m=int(input())
nums=list(range(n))
ans=[]
answer=0
a = math.factorial(n+(m-n)-1)
b = math.factorial(m-n) * math.factorial(n-1)
print(a//b)
profile
입니다.

0개의 댓글