From ef256f013c6bbed361455ec63eec31b3b0dc91b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Guzm=C3=A1n?= Date: Wed, 8 Jul 2026 17:22:26 -0500 Subject: [PATCH] Refactor Java1DArray to include canWin method --- Java/Collections/Java1DArray.java | 71 ++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 19 deletions(-) diff --git a/Java/Collections/Java1DArray.java b/Java/Collections/Java1DArray.java index ed3b017..27a99a0 100644 --- a/Java/Collections/Java1DArray.java +++ b/Java/Collections/Java1DArray.java @@ -48,29 +48,62 @@ import java.io.*; import java.util.*; -import java.text.*; -import java.math.*; -import java.util.regex.*; -public class Java1DArray { +public class Solution { + + public static boolean canWin(int leap, int[] game) { + Queue queue = new LinkedList<>(); + boolean[] visited = new boolean[game.length]; + + queue.offer(0); + visited[0] = true; + + while (!queue.isEmpty()) { + int current = queue.poll(); + + // Check if we can win from current position + if (current + leap >= game.length || current == game.length - 1) { + return true; + } + + // Try moving forward by 1 + if (current + 1 < game.length && game[current + 1] == 0 && !visited[current + 1]) { + queue.offer(current + 1); + visited[current + 1] = true; + } + + // Try leaping forward + if (current + leap < game.length && game[current + leap] == 0 && !visited[current + leap]) { + queue.offer(current + leap); + visited[current + leap] = true; + } + + // Try moving backward by 1 + if (current - 1 >= 0 && game[current - 1] == 0 && !visited[current - 1]) { + queue.offer(current - 1); + visited[current - 1] = true; + } + } + + return false; + } public static void main(String[] args) { - - Scanner sc = new Scanner(System.in); - int num = sc.nextInt(); - int[]numbers = new int[num]; - for(int i = 0;i 0) { + int n = scanner.nextInt(); + int leap = scanner.nextInt(); + + int[] game = new int[n]; + for (int i = 0; i < n; i++) { + game[i] = scanner.nextInt(); } + + System.out.println(canWin(leap, game) ? "YES" : "NO"); } - System.out.println(count); + + scanner.close(); } }