Climb stairs with minimum moves

Problem Link: https://www.pepcoding.com/resources/online-java-foundation/dynamic-programming-and-greedy/climb-stairs-with-minimum-moves-official/ojquestion

def fun(n, arr, dp):
    
    # When asked number of paths, dp[n]=1
    # But, when asked number of ways, dp[n]=0
    dp[n]=0
    for i in range(n-1,-1,-1):
        k=float('inf')
        for j in range(1,arr[i]+1):
            if(i+j<=n):
                k=min(k,dp[i+j])
        dp[i]=k+1
    return dp[0]


def main():
    n = int(input())
    
    jumps = []
    for i in range(n) :
        jumps.append(int(input()))
    
    dp = [0] * (n + 1)
    ans = fun( n, jumps, dp)
    if (ans < 30):
        print(ans)
    else:
        print("null")
    
if __name__ == "__main__":
    main()

Last updated