ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [λ°±μ€€] 14248 점프 점프 with Python
    PS 2022. 2. 10. 17:37
    728x90
    λ°˜μ‘ν˜•

    πŸ“Œ BOJ 14248 점프 점프

    πŸ’‘ 쑰건

    1. λŒλ‹€λ¦¬μ˜ 돌 개수 n이 주어진닀.(1≀n≀100,000)

    2. κ·Έ μœ„μΉ˜μ—μ„œ 점프할 수 μžˆλŠ” 거리 Ai (1≀Ai≀100,000)

    3. ν˜„μž¬μœ„μΉ˜μ—μ„œ λ‹€λ₯Έ λŒμ„ 적절히 λ°Ÿμ•„ ν•΄λ‹Ήν•˜λŠ” μœ„μΉ˜λ‘œ 이동이 κ°€λŠ₯ν•˜λ‹€κ³  ν•  λ•Œ, μ˜μš°κ°€ λ°©λ¬Έ κ°€λŠ₯ν•œ λŒλ“€μ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” 문제.

    4. 탐색 μ•Œκ³ λ¦¬μ¦˜μœ ν˜•μ˜ 문제

    πŸ–₯ μ†ŒμŠ€ μ½”λ“œ

    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

    ⌨️ 문제 풀이

    1. μž…λ ₯으둜 받은 점프할 수 μžˆλŠ” 거리λ₯Ό κ·Έλž˜ν”„μ— λ„£μ–΄μ€€λ‹€.
      인덱슀 μ—λŸ¬λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ arr 리슀트의 ν¬κΈ°λŠ” n + 1둜 ν•΄μ€€λ‹€.

    2. (1) 번 μž‘μ—…μ—μ„œ, ν˜„μž¬ μœ„μΉ˜μ—μ„œ 이동할 수 μžˆλŠ” 거리λ₯Ό λΉΌκ±°λ‚˜ λ”ν–ˆμ„ λ•Œ, 리슀트 인덱슀의 λ²”μœ„μΈμ§€ ν™•μΈν•˜κ³  λ„£λŠ”λ‹€.

    3. BFS μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•˜μ—¬ 방문처리 배열을 λ§Œλ“€κ³  λ°©λ¬Έν•΄μ€€λ‹€.

    4. 정닡은 μ˜μš°κ°€ λ°©λ¬Έ ν•  수 μžˆλŠ” λŒλ“€μ˜ κ°œμˆ˜μ΄λ‹ˆ, visited 리슀트의 길이 + 1을 좜λ ₯ν•œλ‹€.

    5. μ˜μš°κ°€ 처음 λ°Ÿμ€ λŒλ„ ν¬ν•¨μ΄λ‹ˆκΉŒ + 1 ν•΄μ€€λ‹€.
      μ‹œμž‘ν•˜λŠ” λŒμ„ visited에 λ¨Όμ € λ„£μ–΄μ£Όκ³  μ‹œμž‘ν–ˆλ‹€λ©΄ + 1을 ꡳ이 ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

    πŸ’Ύ λŠλ‚€μ 

    1. μž¬λ―ΈμžˆλŠ” BFS λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€.
    2. 개꡴ 개꡴
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.