Search
Duplicate
📗

점프 점프

주차
문제번호
11060
언어
C++
티어
실버
유형
DP
그래프
BFS
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

입력을 받을때마다 그 숫자가 갈 수 있는 공간에 모두 방문을 하면서 더 작은 값을 비교

놓쳤던 부분

dp의 자료형 Int 범위 초과인줄 알고 dp에 long long을 줘서 맞췄었는데 그게 아니었음
dp를 int범위 최대값을 넣어버려서 dp[i] + 1이 동작하는 경우 버퍼오버플로우 발생. 그래서 long long으로 하면 정답이 되는거였음

코드

2020 KB

0 ms

#include <iostream> #include <algorithm> using namespace std; #define MAX 214748364 int main(void) { int n; int input; int dp[1001]; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); fill(dp, dp + 1001, MAX); cin >> n; dp[1] = 0; for (int i = 1; i <= n; i++) { cin >> input; for (int j = 1; j <= input; j++) { if (i + j > 1000) break ; dp[i + j] = min(dp[i + j], dp[i] + 1); } } if (dp[n] == MAX) cout << "-1"; else cout << dp[n]; return (0); }
C++
복사