๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DP

[๋ฐฑ์ค€]1890๋ฒˆ: ์ ํ”„

by syLim___ 2023. 2. 14.
728x90

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

 

1890๋ฒˆ: ์ ํ”„

์ฒซ์งธ ์ค„์— ๊ฒŒ์ž„ ํŒ์˜ ํฌ๊ธฐ N (4 ≤ N ≤ 100)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ N๊ฐœ ์ค„์—๋Š” ๊ฐ ์นธ์— ์ ํ˜€์ ธ ์žˆ๋Š” ์ˆ˜๊ฐ€ N๊ฐœ์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์นธ์— ์ ํ˜€์žˆ๋Š” ์ˆ˜๋Š” 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 9๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋ฉฐ, ๊ฐ€์žฅ

www.acmicpc.net

 


 

์ฒ˜์Œ์—๋Š” ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ ์„ ํ์—๋‹ค๊ฐ€ ๋„ฃ์–ด๊ฐ€๋ฉด์„œ ๋‹จ์ˆœ ํƒ์ƒ‰์„ ํ–ˆ์—ˆ๋Š”๋ฐ ์ž๊พธ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋๋‹ค

์ฐพ์•„๋ณด๋‹ˆ๊นŒ ๋‹จ์ˆœํƒ์ƒ‰, dfs, bfs๋กœ ํ’€๋ฉด ์‹œ๊ฐ„์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚˜๋Š” ๋ฌธ์ œ์˜€๋‹ค

๊ทธ๋ž˜์„œ dp๋กœ ํ’€์—ˆ์Œ!!

 

#include <iostream>

using namespace std;

int n;
int arr[101][101];
long dp[101][101]; //๊ฒฝ๋กœ์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 2^63 - 1 ๊นŒ์ง€๋‹ค. (int๋ฒ”์œ„ ์ดˆ๊ณผ)

int main(){
	
	cin>>n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>arr[i][j];
		}
	}
	if(n==1 || arr[0][0]==0) {	//n์ด 1์ด๊ฑฐ๋‚˜ ์ฒซ์นธ์—์„œ ์ ํ”„๋ฅผ ํ•  ์ˆ˜ ์—†์œผ๋ฉด ์ •๋‹ต์€ 0
		cout<<"0"; return 0;}
		
	dp[0][0]=1;
	
	int path=0;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			int jump = arr[i][j];
			if(i==n-1 && j==n-1) continue;
			if(i+jump<n) dp[i+jump][j] += dp[i][j];
			if(j+jump<n) dp[i][j+jump] += dp[i][j];
			}
	}

	cout<<dp[n-1][n-1];
	return 0;
}
728x90