From 3a1de28524f7c4d00a46e77e7a50cc52f65aefcd Mon Sep 17 00:00:00 2001 From: SinnoLn Date: Sat, 26 Sep 2026 23:25:40 +0900 Subject: [PATCH 1/2] 935. Knight Dialer --- .../\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "leetcode3/\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" new file mode 100644 index 000000000..e69de29bb From cdd86c105530b977066a4166bc724329e2eca406 Mon Sep 17 00:00:00 2001 From: SinnoLn Date: Sat, 26 Sep 2026 23:25:56 +0900 Subject: [PATCH 2/2] ++ --- .../935. Knight Dialer.java" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git "a/leetcode3/\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" "b/leetcode3/\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" index e69de29bb..b02477953 100644 --- "a/leetcode3/\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" +++ "b/leetcode3/\354\235\264\354\247\204\355\235\254/935. Knight Dialer.java" @@ -0,0 +1,47 @@ +import java.util.Arrays; + +class Solution { + private static final int MOD = 1_000_000_007; + private final int[][] moves = { + {4, 6}, {6, 8}, {7, 9}, {4, 8}, {0, 3, 9}, + {}, {0, 1, 7}, {2, 6}, {1, 3}, {2, 4} + }; + + private int[][] memo; + + public int knightDialer(int n) { + if (n == 1) return 10; + + memo = new int[n + 1][10]; + for (int[] row : memo) { + Arrays.fill(row, -1); + } + + int totalWays = 0; + + for (int i = 0; i < 10; i++) { + totalWays = (totalWays + backtrack(n - 1, i)) % MOD; + } + + return totalWays; + } + + private int backtrack(int remain, int digit) { + + if (remain == 0) { + return 1; + } + + + if (memo[remain][digit] != -1) { + return memo[remain][digit]; + } + + int count = 0; + for (int nextDigit : moves[digit]) { + count = (count + backtrack(remain - 1, nextDigit)) % MOD; + } + + return memo[remain][digit] = count; + } +} \ No newline at end of file