[Leetcode] 62. Unique Paths
Algorithm2021. 8. 28. 17:30
반응형
Identifying the Problem
m x n인 행렬의 왼쪽 위에서 오른쪽 아래로 가는 최단 경로의 개수를 구한다.
Organizing thoughts
보자마자 고등학교 확통 경우의 수 문제임을 알고, 똑같은 풀이를 생각했다.
풀이법은 간단하다.
기준점의 행과 열로 가는 경우의 수는 모두 1이고
나머지 칸들은 칸 기준 왼쪽 칸으로 가는 경우의 수와 위 칸으로 가는 경우의 수의 합이다.
예를 들어 2 x 3 이라면,
1 | 1 | 1 |
1 | 1+1 = 2 | 2+1 = 3 |
이렇게 된다.
따라서
1. 2 x 3 행렬을 하나 만들고
2. 2 x 3 행렬을 모두 1로 초기화
3. dp[1][1] 부터 dp[n-1][n-1]까지 대각선(왼쪽 , 위) 합을 구한다.
4. dp[n-1][n-1] 을 리턴한다.
Sourcecode
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m,vector<int>(n,1)); // m x n 인 2차원 벡터 행렬 선언
for(int i = 1; i<m; i++)
for(int k = 1; k<n; k++)
dp[i][k] = dp[i][k-1] + dp[i-1][k]; //대각합을 구하는 과정
return dp[m-1][n-1];
}
};
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 55. Jump Game (0) | 2021.08.29 |
---|---|
[Leetcode] 91. Decode Ways (1) | 2021.08.28 |
[Leetcode] 76. Minimum Window Substring (0) | 2021.08.25 |
[Leetcode] 424. Longest Repeating Character Replacement (0) | 2021.08.24 |
[Leetcode] 79. Word Search (0) | 2021.08.21 |
댓글()