본문 바로가기
Algorithm/Dynamic Programming

[파이썬] 백준 2758: 로또 (골드4)

by 베짱이28호 2023. 9. 25.

[파이썬] 백준 2758: 로또 (골드4)

 

2758번: 로또

선영이는 매주 엄청난 돈을 로또에 투자한다. 선영이가 하는 로또는 1부터 m까지 숫자 중에 n개의 수를 고르는 로또이다. 이렇게 열심히 로또를 하는데, 아직까지 한 번도 당첨되지 않은 이유는

www.acmicpc.net


문제


풀이

0. 방향성 생각

  • 2차원 DP : dp[n번째 자리가][m으로 끝나는 경우의 수]

1. 전체 코드

dp = [[0]*2001 for _ in range(11)]
dp[1] = [0]+[1]*2000
for n in range(1,10):
    for x in range(2001):
        if x//2:
            dp[n+1][x] += sum(dp[n][:x//2+1])

for _ in range(int(input())):
    n,m = map(int,input().split())
    print(sum(dp[n][:m+1]))

 

코멘트

부분합쓰면 시간 더 줄일 수 있을듯

댓글