티스토리 뷰

https://www.acmicpc.net/problem/11060

 

11060번: 점프 점프

재환이가 1×N 크기의 미로에 갇혀있다. 미로는 1×1 크기의 칸으로 이루어져 있고, 각 칸에는 정수가 하나 쓰여 있다. i번째 칸에 쓰여 있는 수를 Ai라고 했을 때, 재환이는 Ai이하만큼 오른쪽으로 �

www.acmicpc.net

다이나믹 프로그래밍을 이용해 풀이하였습니다.

현재 칸 i에서 갈 수 있는 칸 j까지 최소 점프 횟수를 갱신해줍니다.


C++ 소스 코드

#include <iostream>
#include <algorithm>
#define MAX 1002
using namespace std;
int n;
int a[MAX],d[MAX];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    fill(&d[0], &d[MAX-1]+1,1000000);
    cin >> n;
    for(int i=1;i<=n;i++){
        cin >> a[i];
    }
    d[1]=0;
    for(int i=1;i<=n;i++){
        for(int j=i;j<=i+a[i]&&j<=n;j++){
            d[j] = min(d[j],d[i]+1);
        }
    }
    if (d[n]==1000000){
        cout << -1 << '\n';
    }else cout << d[n] << '\n';
    return 0;
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함