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

[๋ฐฑ์ค€]11048๋ฒˆ: ์ด๋™ํ•˜๊ธฐ

by syLim___ 2023. 2. 12.
728x90

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

 

11048๋ฒˆ: ์ด๋™ํ•˜๊ธฐ

์ค€๊ทœ๋Š” N×M ํฌ๊ธฐ์˜ ๋ฏธ๋กœ์— ๊ฐ‡ํ˜€์žˆ๋‹ค. ๋ฏธ๋กœ๋Š” 1×1ํฌ๊ธฐ์˜ ๋ฐฉ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๊ณ , ๊ฐ ๋ฐฉ์—๋Š” ์‚ฌํƒ•์ด ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ๋ฏธ๋กœ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ์œ— ๋ฐฉ์€ (1, 1)์ด๊ณ , ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์•„๋žซ ๋ฐฉ์€ (N, M)์ด๋‹ค. ์ค€๊ทœ๋Š”

www.acmicpc.net


๋„ˆ๋ฌด BFS ๋ฌธ์ œ์ฒ˜๋Ÿผ ์ƒ๊ฒผ์ง€๋งŒ bfs๋กœ ํ’€๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค

์ด ๋ฌธ์ œ๋Š” ํ•œ ์นธ์œผ๋กœ๋ถ€ํ„ฐ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์ด ์ตœ๋Œ€ 3๊ฐœ๋กœ ์ œํ•œ๋˜์–ด ์žˆ๊ณ , ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋„ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— dp๋กœ ํ’€๋ฉด ๋Œ„๋‹ค

dp๋ฌธ์ œ์ธ๊ฑธ ์•Œ๊ณ  ํ’€๋ฉด ์•„์ฃผ ์‰ฝ๋‹ค

 

 

์ฒซ๋ฒˆ์งธ ์˜ˆ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ํ’€์–ด๋ณด์ž

 

๋ฐฐ์—ด์„ 2๊ฐœ ๋งŒ๋“ค์–ด์ค€๋‹ค. maze์—๋Š” ๋†“์—ฌ์žˆ๋Š” ์‚ฌํƒ• ์ˆ˜๋ฅผ, dp์—๋Š” ํš๋“ํ•œ ์‚ฌํƒ• ์ˆ˜์˜ ์ตœ๋Œ€๋ฅผ ์ €์žฅํ• ๊ฑฐ๋‹ค

 

ํ•œ ์นธ์”ฉ ์ด๋™ํ•˜๋ฉด์„œ ๊ธฐ์กด๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌํƒ•์„ ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด dp ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ค„๊ฑฐ์ž„

 


ํ•œ ์นธ์”ฉ ์ˆœ์„œ๋Œ€๋กœ ํ•ด๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹น

 

ํ˜„์žฌ๊นŒ์ง€ ํš๋“ํ•œ ์‚ฌํƒ• ์ˆ˜ (dp[ํ˜„์žฌ์นธ]) + ๋‹ค์Œ ์นธ์œผ๋กœ ์ด๋™์‹œ ์ถ”๊ฐ€๋กœ ํš๋“ํ•  ์‚ฌํƒ• ์ˆ˜ (maze[๋‹ค์Œ์นธ]) ์˜ ๊ฐ’์ด dp[๋‹ค์Œ์นธ] ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋งŒ ๊ฐฑ์‹ 

 

๋ฐฐ์—ด์ด ์ž‘์œผ๋‹ˆ๊นŒ ๋๊นŒ์ง€ ์ญ‰ ํ•˜๋‚˜์”ฉ ํ•ด๋ณด๋ฉด

 

 


#include <iostream>
using namespace std;

int main(){

	int n,m; cin>>n>>m;
	int maze[n][m], DP[n][m];
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			int x; cin>>x;
			maze[i][j]=x; DP[i][j]=x;
		}
	}
	
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(i+1<n && DP[i][j]+maze[i+1][j] > DP[i+1][j]) DP[i+1][j]=DP[i][j]+maze[i+1][j];
			if(i+1<n && j+1<m && DP[i][j]+maze[i+1][j+1] > DP[i+1][j+1]) DP[i+1][j+1]=DP[i][j]+maze[i+1][j+1];
			if(j+1<m && DP[i][j]+maze[i][j+1]>DP[i][j+1]) DP[i][j+1]=DP[i][j]+maze[i][j+1];
		}		
	}
	cout<<DP[n-1][m-1];
	return 0;
}

 

728x90