[LeetCode][Python3] 62. Unique Paths
Problem :
https://leetcode.com/problems/unique-paths
My Solution :
Comment :
전형적인 DP 문제인데, 나는 문제를 보는 순간 그냥 단순 조합 문제라고 생각했다. 그래서 m+n-2 중 min(m, n)-1개를 고르는 문제로 풀었다. 물론 math.factorial 을 사용하거나 itertools.combinations를 사용하면 바로 풀린다. (combinations는 큰 수에서 timeout 발생)
하지만 조합을 직접 구현해보는 것에 초점을 맞춰서 위와 같이 풀었다. nCr = n-1Cr-1 + n-1Cr 공식이다.
왜 nCr 조합 문제라고 생각했냐면... 예를 들어 오른쪽으로 7번, 아래쪽으로 3번 움직여야 한다면 총 10번의 움직임 중 아래쪽 3번이 들어갈 자리만 지정하면 끝이다. 즉 10C3 문제라는 뜻이다.
Factorial Example :
아래는 전형적인 DP 방식 Bottom-up 으로 풀이한 것이다.
굳이 말로 풀어쓰자면 예를 들어 (5,3)에 도착하는 경우는 (4,3)에서 온 경우와 (5,2)에서 온 경우밖에 없다. 따라서 두 경우의 수를 더하면 된다.
My Solution2 :
'프로그래밍 > LeetCode' 카테고리의 다른 글
[LeetCode][Python3] 78. Subsets (0) | 2019.01.13 |
---|---|
[LeetCode][Python3] 238. Product of Array Except Self (0) | 2019.01.12 |
[LeetCode][Python3] 347. Top K Frequent Elements (0) | 2019.01.05 |
[LeetCode][Python3] 94. Binary Tree Inorder Traversal (1) | 2019.01.03 |
[LeetCode][Python3] 55. Jump Game (0) | 2018.11.15 |
[LeetCode][Python3] 49. Group Anagrams (0) | 2018.11.14 |
[LeetCode][Python3] 48. Rotate Image (0) | 2018.11.13 |
[LeetCode][Python3] 46. Permutations (0) | 2018.11.12 |
최근에 달린 댓글 최근에 달린 댓글