This is a typical DP (Dynamic Programming) problem. Since the robot could only move to down or to right, the number of ways to get to position x, y could be calculate by number of ways to get to x - 1, y plus number of ways to get to x, y - 1. So we could use DP get the final answer from top-down, left-right order.
Since every node only relies on it's left and up node, we could only use one 1-D array to save the DP status.
class Solution: def uniquePaths(self, m: int, n: int) -> int: dp =  * n for _ in range(m - 1): for i in range(1, n): dp[i] += dp[i - 1] return dp[-1]