๋ฌธ์
ํ์ด
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int dp[100001][4];
int solution(vector<vector<int> > land)
{
int answer = 0;
int len = land.size();
for(int i=0; i<4; i++) dp[0][i] = land[0][i];
for(int i=1; i<len; i++){
for(int k=0; k<4; k++){
if(k==0) dp[i][k] = max({dp[i-1][k+1],dp[i-1][k+2],dp[i-1][k+3]})+land[i][k];
if(k==1) dp[i][k] = max({dp[i-1][k-1],dp[i-1][k+1],dp[i-1][k+2]})+land[i][k];
if(k==2) dp[i][k] = max({dp[i-1][k-2],dp[i-1][k-1],dp[i-1][k+1]})+land[i][k];
if(k==3) dp[i][k] = max({dp[i-1][k-3],dp[i-1][k-2],dp[i-1][k-1]})+land[i][k];
answer = max(answer, dp[i][k]);
}
}
return answer;
}
ํ์ด(14๋ถ)
์ด ๋ฌธ์ ๋ฅผ ์ฒ์ ์๋ํ๋ ๊ฑด ํ 8๊ฐ์ ์ ์ด์๋ ๊ฑฐ ๊ฐ์ต๋๋ค. ๊ทธ๋๋ ์ง๊ธ๋ ๋ถ์กฑํ๊ธด ํ์ง๋ง DP๊ฐ๋ ์ด ๋ถ์กฑํด์ ๊ทธ๋ฆฌ๋๋ก ํ๋ ค๋ค๊ฐ ์คํจํ๋ ๊ธฐ์ต์ด ๋๋ค์
์ค๋๋ง์ ์ด ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๊ฒ ๋์๋๋ฐ ์์ฝ๊ฒ ํ๋ ค์ ์ฑ์ฅํ ๊ฒ ๊ฐ์ ๊ธฐ๋ถ์ด ์ข์ต๋๋ค.
์๋์ ์ ์ถ๋ ฅ์ผ๋ก ์ค๋ช ์ ํด๋ณด๊ฒ ์ต๋๋ค.
land | answer |
[[1,2,3,5],[5,6,7,8],[4,3,2,1]] | 16 |
if(k==0) dp[i][k] = max({dp[i-1][k+1],dp[i-1][k+2],dp[i-1][k+3]})+land[i][k];
if(k==1) dp[i][k] = max({dp[i-1][k-1],dp[i-1][k+1],dp[i-1][k+2]})+land[i][k];
if(k==2) dp[i][k] = max({dp[i-1][k-2],dp[i-1][k-1],dp[i-1][k+1]})+land[i][k];
if(k==3) dp[i][k] = max({dp[i-1][k-3],dp[i-1][k-2],dp[i-1][k-1]})+land[i][k];
ํ ํ์ฉ ๋ด๋ ค์ค๋ฉด์ ๊ฐ์ ์ด์ ๋ฐ์ ์ ์๋ค๋ ์ ์ฝ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ ๋ณธ์ธ์ ์ด์ ์ด์ ์ ์ธํ ๋๋จธ์ง ๋์ ํฉ ์ค ๊ฐ์ฅ ํฐ ๊ฒ์ ํ์ฌ land๊ฐ๊ณผ ๋ํด์ฃผ๊ณ , ๋ง์ง๋ง์ ์ ์ผ ํฐ ๊ฐ์ ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ํ๋ก๊ทธ๋๋จธ์ค(Programmers)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ ๋ ฅ๋ง์ ๋๋ก ๋๋๊ธฐ(Level 2) (0) | 2022.04.18 |
---|---|
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ๋ค์ ํฐ ์ซ์(Level 2) (0) | 2022.04.18 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ฌ๋ฐ๋ฅธ ๊ดํธ(Level 2) (0) | 2022.04.18 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์ต์๊ฐ ๋ง๋ค๊ธฐ(Level 2) (0) | 2022.04.18 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ํ๋ณดํค(Level 2) (0) | 2022.04.17 |
[c++] ํ๋ก๊ทธ๋๋จธ์ค - ์นดํซ(Level 2) (0) | 2022.04.14 |
๋๊ธ