-
[λ°±μ€] 14248 μ ν μ ν with PythonPS 2022. 2. 10. 17:37728x90λ°μν
π BOJ 14248 μ ν μ ν
π‘ 쑰건
λλ€λ¦¬μ λ κ°μ nμ΄ μ£Όμ΄μ§λ€.(1β€nβ€100,000)
κ·Έ μμΉμμ μ νν μ μλ 거리 Ai (1β€Aiβ€100,000)
νμ¬μμΉμμ λ€λ₯Έ λμ μ μ ν λ°μ ν΄λΉνλ μμΉλ‘ μ΄λμ΄ κ°λ₯νλ€κ³ ν λ, μμ°κ° λ°©λ¬Έ κ°λ₯ν λλ€μ κ°μλ₯Ό ꡬνλ λ¬Έμ .
νμ μκ³ λ¦¬μ¦μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin from collections import deque n = int(stdin.readline()) arr = [0] + list(map(int, stdin.readline().split())) graph = [[] for _ in range(n + 1)] s = int(stdin.readline()) for i in range(1, n + 1): if 0 < i + arr[i] < n + 1: graph[i].append(i + arr[i]) if 0 < i - arr[i] < n + 1: graph[i].append(i - arr[i]) def solve(s): q = deque() q.append(s) visited = set() while q: now = q.popleft() for x in graph[now]: if x not in visited: visited.add(x) q.append(x) return len(visited) print(solve(s) + 1)
π μμ λ° μ€νκ²°κ³Ό
μμ
5 1 4 2 2 1 3
μ€νκ²°κ³Ό
5
β¨οΈ λ¬Έμ νμ΄
μ λ ₯μΌλ‘ λ°μ μ νν μ μλ 거리λ₯Ό κ·Έλνμ λ£μ΄μ€λ€.
μΈλ±μ€ μλ¬λ₯Ό λ°©μ§νκΈ° μν΄ arr 리μ€νΈμ ν¬κΈ°λ n + 1λ‘ ν΄μ€λ€.(1) λ² μμ μμ, νμ¬ μμΉμμ μ΄λν μ μλ 거리λ₯Ό λΉΌκ±°λ λνμ λ, 리μ€νΈ μΈλ±μ€μ λ²μμΈμ§ νμΈνκ³ λ£λλ€.
BFS μκ³ λ¦¬μ¦μ μ΄μ©νμ¬ λ°©λ¬Έμ²λ¦¬ λ°°μ΄μ λ§λ€κ³ λ°©λ¬Έν΄μ€λ€.
μ λ΅μ μμ°κ° λ°©λ¬Έ ν μ μλ λλ€μ κ°μμ΄λ, visited 리μ€νΈμ κΈΈμ΄ + 1μ μΆλ ₯νλ€.
μμ°κ° μ²μ λ°μ λλ ν¬ν¨μ΄λκΉ + 1 ν΄μ€λ€.
μμνλ λμ visitedμ λ¨Όμ λ£μ΄μ£Όκ³ μμνλ€λ©΄ + 1μ κ΅³μ΄ νμ§ μμλ λλ€.
πΎ λλμ
- μ¬λ―Έμλ BFS λ¬Έμ μμ΅λλ€.
- κ°κ΅΄ κ°κ΅΄
λ°μν'PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1759 μνΈ λ§λ€κΈ° with Python (0) 2022.02.13 [λ°±μ€] 1236 μ± μ§ν€κΈ° with Python (0) 2022.02.10 [λ°±μ€] 11655 ROT13 with Python (0) 2022.02.10 [λ°±μ€] 6603 λ‘λ with Python (0) 2022.02.10 [λ°±μ€] 2535 μμμ μ 보μ¬λ¦ΌνΌμλ with Python (0) 2022.02.08