폴짝폴짝

면접 대비

시간 제한2초메모리 제한128 MB

요약
각 돌에 적힌 수의 배수만큼 좌우로 이동할 수 있는 개구리가 출발 돌에서 목표 돌까지 가는 최소 점프 횟수를 구합니다.
난이도

보통10점 중 5점

유형
BFS, 그래프, 최단 경로
정답자
아직 제출이 없습니다

문제

개구리가 1번부터 N번까지 일렬로 놓인 징검다리 위를 뛰어다닌다. 각 징검다리에는 자연수가 하나씩 적혀 있다. 개구리가 i번 징검다리에 서 있을 때, i에서 그 징검다리에 적힌 수의 양의 배수만큼 떨어진 징검다리로 점프할 수 있다. 왼쪽과 오른쪽 모두 가능하지만, 1번부터 N번 사이의 징검다리로만 이동할 수 있다.

개구리는 a번 징검다리에서 출발해 b번 징검다리에 도착하려고 한다. 도착하기 위해 필요한 최소 점프 횟수를 구하시오.

입력

첫째 줄에 징검다리의 개수 N(1 ≤ N ≤ 10,000)이 주어진다.

둘째 줄에 각 징검다리에 적힌 N개의 자연수가 순서대로 주어진다. 각 수는 10,000 이하이다.

셋째 줄에 자연수 a와 b가 주어진다. 이는 개구리가 a번 징검다리에서 출발해 b번 징검다리로 가고 싶다는 뜻이다. a와 b는 모두 N 이하이다.

출력

첫째 줄에 개구리가 a번 징검다리에서 b번 징검다리로 가기 위해 필요한 최소 점프 횟수를 출력한다.

갈 수 없다면 -1을 출력한다.

힌트

1번 징검다리에 1이 적혀 있다면, 1의 배수인 4만큼 떨어진 5번 징검다리로 한 번에 점프할 수 있다.

예제1

  1. 예제 1

    입력
    5
    1 2 2 1 2
    1 5
    
    예상 출력
    1