하루하나코딩

백준 1890 : 점프 c++

HAHAKO 2023. 1. 19. 12:43

코드

#include <iostream>

using namespace std;

int N;
long long dp[101][101];
int map[101][101];

		

int main(){
	
	
	cin >> N;
	
	
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
			cin >> map[i][j];
		}
	}
	dp[0][0] = 1;
	for(int i = 0; i < N; i++){
		for(int j = 0; j < N; j++){
			if(map[i][j] == 0) continue;
			else{
				if(i+map[i][j] < N) dp[i+map[i][j]][j] += dp[i][j];
				if(j+map[i][j] < N) dp[i][j+map[i][j]] += dp[i][j];	
			}	
		}
	}
	cout << dp[N-1][N-1];
	return 0;
}

알게된점

처음에는 상하좌우로 이동한다고 생각했는데,

문제를 잘 읽어보니 그냥 하 우로만 움직이면 된다.

어렵지않게 알고리즘을 짤 수 있다.