[BOJ] Q2410 2의 멱수의 합

Question

Language: Python

Difficulty: Silver 1~ Gold 5

해당 문제는 Q2293문제와 유사하다.

단, 숫자를 이루는 타입이 2의 제곱 형태이므로 아래와 같이 타입을 미리 생성해서 화용한다.

types=[2**num for num in range(0,20) if 2**num <1000000]

Solution

def solution():
    dp=[0] * (N+1)
    dp[0]=1
    types=[2**num for num in range(0,20) if 2**num <1000000]

    for type in types:
        for i in range(1,N+1):
            if i-type >=0:
                dp[i]+=dp[i-type]
            dp[i]%=1000000000
    return dp[N]

if __name__ == "__main__":
    N=int(input())
    print(solution())

댓글남기기