프로그래머스/LV2
[프로그래머스 Lv2, python]- 멀리 뛰기
chyam_eun
2024. 12. 30. 10:11
def combi(m,n):
if n==0 or m==n:
return 1
else: #조합을 재귀로 표현
return combi(m-1,n-1)*m//n
def solution(n):
cnt=0
ma=n
while(n>=0):
cnt+=combi(ma,n) # n을 1로 다 두고 1을 2개씩 묶어서 그때마다 경우의수를 구함
ma-=1
n-=2
return cnt%1234567
# 1 1 1 1 => 4C4 (1개)
# 1 1 2 => 3C2 (3개)
# 2 2 => 2C0 (1개)
처음 풀이(위에)는 테스트케이스 5개정도 런타임에러걸려서 통과를 못했었다.
아래 풀이는 재귀말고 반복문으로 구하였다.
def combi(m,n):
mul=1
div=1
for a in range(n): #조합
mul*=(m-a) #분자
div*=(n-a) #분모
return mul//div
def solution(n):
cnt=0
ma=n
while(n>=0):
cnt+=combi(ma,n)
ma-=1
n-=2
return cnt%1234567