プログラマー-通学路[java]
8191 ワード
質問元:https://programmers.co.kr/learn/courses/30/lessons/42898
最左上隅(すなわち家屋の所在地の座標)は(1,1)であり、最右下角(すなわち学校の所在地の座標)は(m,n)である.
グリッドサイズm、n、および水没領域座標を含む2 Dフラットピットにパラメータ化します.右側と下側だけに移動し、家から学校までの最短パスの数を1000000 7で割ってからソリューション関数に戻ってください.
せいげんじょうけん
メッシュのサイズm,nは1または100以下の自然数である.
mとnがともに1の場合、入力は提供されません.
水没した地域は0個または10個以上である.
家や学校が水没したら、入力は与えられません.
I/O例
mnpuddlesreturn43[[2, 2]]4
問題の説明
最左上隅(すなわち家屋の所在地の座標)は(1,1)であり、最右下角(すなわち学校の所在地の座標)は(m,n)である.
グリッドサイズm、n、および水没領域座標を含む2 Dフラットピットにパラメータ化します.右側と下側だけに移動し、家から学校までの最短パスの数を1000000 7で割ってからソリューション関数に戻ってください.
せいげんじょうけん
メッシュのサイズm,nは1または100以下の自然数である.
mとnがともに1の場合、入力は提供されません.
水没した地域は0個または10個以上である.
家や学校が水没したら、入力は与えられません.
I/O例
mnpuddlesreturn43[[2, 2]]4
問題を解く
class Solution {
public int solution(int m, int n, int[][] puddles) {
int[][] routes = new int[n + 1][m + 1];
for(int i = 0; i < puddles.length; i++) {
routes[puddles[i][1]][puddles[i][0]] = -1;
}
routes[1][1] = 1;
for(int i = 1; i < routes.length; i++) {
for(int j = 1; j < routes[0].length; j++) {
if(routes[i][j] != -1) {
if(routes[i - 1][j] > 0)
routes[i][j] += routes[i - 1][j] % 1000000007;
if(routes[i][j - 1] > 0)
routes[i][j] += routes[i][j - 1] % 1000000007;
}
}
}
return routes[n][m] % 1000000007;
}
}
詳細については、「https://velog.io/@ajufresh/%EB%93%B1%EA%B5%A3%EA%B8%B8」を参照してください.Reference
この問題について(プログラマー-通学路[java]), 我々は、より多くの情報をここで見つけました https://velog.io/@davidko/프로그래머스-등굣길javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol