μμ°λ κ°κ΅¬λ¦¬λ€ κ°κ΅΄κ°κ΅΄κ°κ΅΄πΈ
μμ°λ μ§κΈ nκ°μ λμ΄ μΌλ ¬λ‘ λμ¬μλ λλ€λ¦¬μ μλ€. κ·Έλ¦¬κ³ λλ€λ¦¬μ λμλ μ«μκ° νλμ© μ νμλ€. μμ°λ μ΄ μ«μκ° μ νμλ λ§νΌ μΌμͺ½μ΄λ μ€λ₯Έμͺ½μΌλ‘ μ νν μ μλλ°, μ΄λ λλ€λ¦¬ λ°μΌλ‘ λκ° μλ μλ€.
μμ°λ μ΄ λλ€λ¦¬μμ μκΈ°κ° λ°©λ¬Έ κ°λ₯ν λλ€μ κ°μλ₯Ό μκ³ μΆμ΄νλ€. λ°©λ¬Έ κ°λ₯νλ€λ κ²μ νμ¬μμΉμμ λ€λ₯Έ λμ μ μ ν λ°μ ν΄λΉνλ μμΉλ‘ μ΄λμ΄ κ°λ₯νλ€λ λ»μ΄λ€.
νμ¬ μμΉκ° μ£Όμ΄μ‘μ λ, μμ°κ° λ°©λ¬Έ κ°λ₯ν λλ€μ κ°μλ₯Ό μΆλ ₯νμμ€.
첫 λ²μ§Έ μ€μλ λλ€λ¦¬μ λ κ°μ n
μ΄ μ£Όμ΄μ§λ€.(1β€nβ€100,000)
λμ λ²νΈλ μΌμͺ½λΆν° 1λ²μμ n
λ²μ΄λ€. λ€μ μ€μλ κ·Έ μμΉμμ μ νν μ μλ 거리 Aκ° μ£Όμ΄μ§λ€.(1β€Aβ€100,000)
λ€μ μ€μλ μΆλ°μ s
κ° μ£Όμ΄μ§λ€.(1β€sβ€n)
μμ°κ° λ°©λ¬Έ κ°λ₯ν λλ€μ κ°μλ₯Ό μΆλ ₯νμμ€.
5
1 4 2 2 1
3
5
λλ λ°°μ΄κ³Ό μΈλ±μ€λ₯Ό μ νμ©νλ©΄ λ¬Έμ λ₯Ό ν μ μκ² λ€λ μκ°μ΄ λ€μλ€.
μμ°κ° λ°κ³ μλ λμ μ ν μλ μ«μλ§νΌ μ’, μ°λ‘ μ΄λν μ μλ€κ³ νκΈ° λλ¬Έμ,
νμ¬ μμ°κ° λ°κ³ μλ λμ μΈλ±μ€μ λμ μ ν μλ μ«μλ₯Ό λνκ³ λΉΌμ€μΌλ‘μ¨, μ’μ°λ‘ μ΄λνλ κ±Έ ꡬνν μ μμλ€.
μ΄λ ν κ°μ 맀컀λμ¦μΌλ‘ λλ€λ¦¬λ₯Ό λ°λ³΅ν΄μ 건λκ°μΌ νκΈ° λλ¬Έμ, μ΄λ₯Ό μ¬κ· ν¨μλ‘ λ§λ€μ΄ νΈμΆν΄λ³΄κΈ°λ‘ νλ€.
λ¨, μ νλ₯Ό ν μ μλ 쑰건μ μ νν ν λμ λ²νΈκ° λλ€λ¦¬μ λ²μ λ΄μ μμ΄μΌ νκ³ , ν΄λΉ λμ λ°©λ¬Έν μ μ΄ μμ΄μΌ νλ€.
import java.util.*;
public class Main {
public static int[] stones; // λλ€λ¦¬ μ 보
public static int count; // λ κ°μ
public static ArrayList<Integer> visited = new ArrayList<>(); // λ λ°©λ¬Έ μ¬λΆ
// μ ν λ©μλ
public static void step(int start) {
// startκ° λλ€λ¦¬ λ²μ λ΄μ μκ³ , λ°©λ¬Ένμ§ μμ κ²½μ°μλ§ μ΄λ
if (start > 0 && start <= count && !visited.contains(start)) {
visited.add(start); // λ°©λ¬Έν λ μ μ₯
step(start - stones[start]); // μΌμͺ½μΌλ‘ μ ν
step(start + stones[start]); // μ€λ₯Έμͺ½μΌλ‘ μ ν
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
count = sc.nextInt();
stones = new int[count + 1];
// λ μ 보 μ
λ ₯
for (int i = 1; i <= count; i++) {
stones[i] = sc.nextInt();
}
// μΆλ°μ§ μ
λ ₯
int start = sc.nextInt();
// μ ν
step(start);
// λ°©λ¬Έν λ κ°μ μΆλ ₯
System.out.println(visited.size());
sc.close();
}
}
λ¨Όμ λμ κ°μλ₯Ό μ
λ ₯λ°κ³ , ν΄λΉ κ°μλ§νΌμ λ μ 보λ₯Ό μ
λ ₯λ°μ stones
λ°°μ΄μ μ μ₯νλ€.
μΆλ°μ§λ₯Ό μ
λ ₯λ°κ³ , step
ν¨μλ₯Ό νΈμΆνλ€.
start
κ° λλ€λ¦¬ λ²μ λ΄μ μκ³ , λ°©λ¬Έν μ μ΄ μλ€λ©΄,
λ°©λ¬Έν λμ visited
리μ€νΈμ μ μ₯νλ€.
νμ¬ μμΉ(start)μμ ν΄λΉ λμ μ ν μλ μ«μλ₯Ό λΊ κ°μ κ°μ§κ³ step
ν¨μλ₯Ό μ¬κ· νΈμΆνλ€. (μΌμͺ½μΌλ‘ μ ν)
νμ¬ μμΉ(start)μμ ν΄λΉ λμ μ ν μλ μ«μλ₯Ό λν κ°μ κ°μ§κ³ step
ν¨μλ₯Ό μ¬κ· νΈμΆνλ€. (μ€λ₯Έμͺ½μΌλ‘ μ ν)
κ°κ΅΄κ°κ΅΄κ°κ΅΄πΈ