https://www.acmicpc.net/problem/1520
1520๋ฒ: ๋ด๋ฆฌ๋ง ๊ธธ
์ฌํ์ ๋ ๋ ์ธ์ค์ด๋ ์ง๋๋ฅผ ํ๋ ๊ตฌํ์๋ค. ์ด ์ง๋๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ง์ฌ๊ฐํ ๋ชจ์์ด๋ฉฐ ์ฌ๋ฌ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ํ ์นธ์ ํ ์ง์ ์ ๋ํ๋ด๋๋ฐ ๊ฐ ์นธ์๋ ๊ทธ ์ง์ ์ ๋์ด๊ฐ ์ฐ์ฌ ์์ผ๏ฟฝ
www.acmicpc.net
โจ ๋ด ์์ค ์ฝ๋
#include<iostream>
using namespace std;
int map[500][500];
int result[500][500] = { -1, };
int M, N;
int moved[4][2] = { {-1,0},{0,-1},{0,1},{1,0} };
int func(int x, int y) {
//์ตํ๋จ์ ๋์ฐฉํ์ ๊ฒฝ์ฐ
if (x == M - 1 && y == N - 1) {
return 1;
}
//์ด๋ฏธ ๋ฐฉ๋ฌธ์ ํ ๊ธธ์ ๊ฒฝ์ฐ
if (result[x][y] != -1) {
return result[x][y];
}
//์ด๋ ๊ฐ๋ฅํ 4๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ํ์
for (int i = 0; i < 4; i++) {
int nextX = x + moved[i][0];
int nextY = y + moved[i][1];
//๋ฐฐ์ด ๋ฒ์์์ ๋ฒ์ด๋์ง ์๊ณ , ํ์ฌ ์์น๋ณด๋ค ๋์ด๊ฐ ๋ฎ์ ๋ค์ ์์น๋ฅผ ํ์
if (map[x][y] > map[nextX][nextY] && nextX >= 0 && nextY >= 0 && nextX < M && nextY < N) {
//์ฒ์ ๋ฐฉ๋ฌธํด๋ณด๋ ๊ธธ์ ๊ฒฝ์ฐ
if (result[x][y] == -1) {
result[x][y] = func(nextX, nextY);
}
//์ด๋ฏธ ๋ฐฉ๋ฌธํด๋ณธ ๊ธธ์ ๊ฒฝ์ฐ
else {
result[x][y] += func(nextX, nextY);
}
}
}
//๋ค ํ์์ ํด๋ณด์์ง๋ง ์ตํ๋จ์ผ๋ก ๊ฐ ์ ์๋ ๊ธธ์ด ์๋ ๊ฒฝ์ฐ
if (result[x][y] == -1) {
result[x][y] = 0;
}
return result[x][y];
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
//๋ชจ๋ ๊ธธ์ -1๋ก ์ด๊ธฐํ
fill(&result[0][0], &result[500 - 1][500], -1);
cin >> M >> N;
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
cin >> map[i][j];
}
}
func(0, 0);
cout << result[0][0];
system("PAUSE");
return 0;
}
๐ ๋ฌธ์ ํ์ด



๋ค์์ ๊ฐ์ด ์๊ณ ๋ฆฌ์ฆ์ด ์งํ
์ตํ๋จ์ ๋์ฐฉํ์์ ๋์๋ 1์ด๋ผ๋ ๊ฐ์ ๋ฐํ, ์ง๋์จ ๋ชจ๋ ๊ฒฝ๋ก์ ๊ฐ ๋ํ ๋ฐ๊พธ์ด ์ค๋ค
์์ ๊ฒฝ์ฐ ์ฒ๋ผ ๊ณ์ํด์ ํ์์ ํ๋ค๊ฐ ์ด๋ฏธ ๊ฑฐ์ณ๋ณธ ๊ฒฝ๋ก๋ฅผ ๋ง๋ ๋๊ฐ ์กด์ฌ
ํด๋น ๊ฒฝ๋ก๋ ์ด๋ฏธ ํ์์ ํด๋ณด์์ ๊ฒฐ๊ณผ๋ฅผ ์๊ณ ์๊ธฐ ๋๋ฌธ์, ๊ทธ ๊ฐ์ ๋ฐํํ์ฌ ๊ฐ์ ๋ํด์ค๋ค
์ต์ข ์ ์ผ๋ก ๋ชจ๋ ๊ฒฝ๋ก์ ์๋ [0][0]์ ๋ค์ด์๊ธฐ์ ์ด๋ฅผ ์ถ๋ ฅ
์์ ๊ฒฝ์ฐ์๋ ๋ํ๋์์ง ์์ง๋ง, ์ตํ๋จ์ ๋์ฐฉํ์ง ๋ชปํ๊ณ ๋๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์
์ตํ๋จ์ ๋์ฐฉํ์ง ๋ชปํ์์ ๋์๋ ๊ฒฝ๋ก์ ๊ฐ์ '0'์ผ๋ก ๋ฐ๊พธ์ด ์ค๋ค
์ด๋ฏธ ๋ฐฉ๋ฌธ ํ์์ง๋ง, ์ตํ๋จ์๋ ๋์ฐฉํ์ง ๋ชปํ๋ ๊ฒฝ๋ก๋ผ๋ ์๋ฏธ
์๊ณ ๋ฆฌ์ฆ์ด ํ์์ ํ๋ค๊ฐ 0์ ๋ฐ๊ฒฌํ๋ฉด, ๋ ์ด์ ๋์๊ฐ๋ ์ตํ๋จ์๋ ๋์ฐฉํ์ง ๋ชปํ๋ ๊ฒฝ๋ก์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ก ๊ฐ์ ๋ฐํํ์ฌ ๋ ์ด์์ ํ์์ ํ์ง ์๊ฒ ์ฒ๋ฆฌํด์ค๋ค
โญ ๋ฌธ์ ํ์ด ๊ฒฐ๊ณผ
