๋ฌธ์ :
๋ถ์ :
n x n ํ๋ค ์ง์ด ์์ผ๋ฉด ํ๋ค๋ ์ํ ์ข์ฐ๋ก ์์ง์ผ ์ ์๊ณ ํ ์์น์์ ๋ค์ ๋ ์ด ๋ ๋ ์ด๋ํ๋๋ฐ ์ด๋ํ๋ ์นธ์ ๋จน์ด๊ฐ ๋ ๋ง์์ผ ์์ง์ผ ์ ์๋ ์์ฌ์์ด ์น๊ตฌ๋ค. ๊ทธ๋์ ์ต๋๋ก ์ด ์ (?) ์๊ฒ ํ๋ ๋ ์ ๊ตฌํ๋ ๋ฌธ์ ์๋ค.
arr๋ฐฐ์ด์ ๋ฐฅ์ ๋ฃ์ด์ฃผ๊ณ dp๋ฅผ ๋์์ 0์ผ๋ก ์ด๊ธฐํ ์์ผ์ค ๋ค
dp ํจ์๋ฅผ ๋๋ฉด์ ์ต๋๋ก ์ด ์ ์๋ maxRice (maxLife ๋ณ์๊ฐ ๋ ์ ์ ํ ๋ฏ)๋ฅผ ๊ฐฑ์ ์์ผ์ค๋ค.
find_max_life ํจ์ ๋ด์์๋ ์ฐ์ ํ๋ฃจ๋ ์ด ์ ์๊ธฐ ๋๋ฌธ์ ํ ์์น์ 1์ ๋ฃ์ด์ฃผ๊ณ ์ํ์ข์ฐ๋ฅผ ํ์ํ๋ฉด์
๋ค์ ์์น์ ๋จน์ ๊ฒ์ด ํ ์์น๋ณด๋ค ๋ง์์ง, ๋ฐฐ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์์์ง check ํ๋ค
๊ทธ๋ฆฌ๊ณ dp ์๋ฆฌ์ ๋ค์ ์์น๋ก ์์ง์์๋ ๋ ์ด ์ ์๋ค๋ฉด +1์ฉ ๋ํ ์ฌ๊ท๋ฅผ ํธ์ถํด ๊ฐ์ ์ฆ๊ฐ์ํจ ๋ค ์์ง์์ด ๋๋ ์ฌ๊ท๊ฐ ์ข ๋ฃ๋๋ฉด for๋ฌธ๋ ์ข ๋ฃ๋๊ณ ๊ทธ ์๋ฆฌ์ ์์ง์ผ ์ ์๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
c++ ์ฝ๋ :
//
// 1937_selfishPanda.cpp
// SOMA๐ฉ๐ป๐ป
//
// Created by JoSoJeong on 2021/04/30.
//
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int arr[501][501];
int N;
int dp[501][501];
int dx[] = { 0, 0, 1, -1 }; //up down left right
int dy[] = { 1, -1, 0, 0 };
int find_max_life(int i, int j){
if(dp[i][j] > 0){
return dp[i][j];
}
dp[i][j] = 1;
for(int k = 0; k < 4; k++){
int nextX = i + dx[k];
int nextY = j + dy[k];
//์์ธ์ฒ๋ฆฌ
if(nextX < 0 || nextY < 0 || nextX >= N || nextY >= N) continue;
if(arr[i][j] >= arr[nextX][nextY]) continue;
//๊ธฐ์กด ๊ฐ๊ณผ ๋ค์ ๋จน์ด ์ฐพ์ผ๋ฌ ์์ง์์๋ ์ค์ ์ต๋๊ฐ
dp[i][j] = max(dp[i][j], find_max_life(nextX, nextY) + 1);
}
return dp[i][j];
}
int main(){
cin >> N;
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
cin >> arr[i][j];
dp[i][j] = 0;
}
}
//input ํ์ธ์ฉ
// for(int i = 0; i < N; i++){
// for(int j = 0; j < N; j++){
// cout << arr[i][j] << " ";
// }
// cout << '\n';
// }
int maxRice = 0;
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
maxRice = max(maxRice, find_max_life(i, j));
}
cout << '\n';
}
cout << maxRice <<'\n';
return 0;
}
'Algorithm๐ฐ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 16236 ์๊ธฐ ์์ด DFS, Priority-Queue (0) | 2021.05.06 |
---|---|
[๋ฐฑ์ค] 9095 1,2,3 ๋ํ๊ธฐ DP (0) | 2021.05.04 |
[๋ฐฑ์ค] 13460 ๊ตฌ์ฌ ์ฐพ๊ธฐ2 BFS (0) | 2021.04.22 |
[๋ฐฑ์ค] 2583 ์์ญ ๊ตฌํ๊ธฐ DFS (0) | 2021.04.22 |
[๋ฐฑ์ค] 1697 ์จ๋ฐ๊ผญ์ง BFS (0) | 2021.04.21 |
๋๊ธ