๋ฐ์ํ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋ฐ๋จน๊ธฐ
https://programmers.co.kr/learn/courses/30/lessons/12913
๋ฌธ์ ์ ๊ทผ
์ฒ์์ ์ ๊ทผํ ๋ dfs๋ก ํ์ด์ผ ๋ ๊น? dp๋ก ํ์ด์ผ ๋ ๊น? ๊ณ ๋ฏผ์ด ๋์๋๋ฐ dfs๋ก ์ฝ๋ ์ง๋ ค๊ณ ํ๋๊น ๊ทธ๋ฅ ๋ฐ๋ก ๋งํ์ dp๋ก ์๊ฐํด๋ดค๋ค.
์ผ๋จ ์ ๊ทผ ๋ฐฉ์์ ํ์ฌ ๋ด๊ฐ ๋ฐ์ ๋
๊ณผ ๊ฐ์ ์ด์ ์ ์ธํ๊ณ ๋ฐ๋ก ์ ํ์์ ์ต๊ณ ์ ์๋ฅผ ๊ฐ์ง ๊ณณ์ ๋ฐ์์ผ ์ต๊ณ ์ ์๋ฅผ ์ ์งํ๋ฉด์ ๋
์ ๋ฐ์๊ฐ์ ์๋ค.
๊ทธ๋์ dp๋ฐฐ์ด์ ๊ทธ ์์น์ ํด๋นํ๋ ์ต๊ณ ์ ์๋ฅผ ์ ์ฅํ๊ณ , ๋ง์ง๋ง ํ์ค์์ ์ต๊ณ ์ ์๊ฐ ์ต์ข
๋ต์ด ๋๋ค.
Code
class Solution {
int solution(int[][] land) {
int answer = 0;
int[][] dp = new int[land.length][4]; // ๊ฐ ์ด๋ง๋ค ์ต๊ณ ์ ์๋ฅผ ๊ธฐ๋กํ ๋ฐฐ์ด์ด๋ค.
dp[0] = land[0]; // ์ฒซ๋ฒ์งธ ํ์ ๊ทธ๋๋ก๊ฐ ์ต๊ณ ์ ์์ด๋ค.
for(int i = 1; i<land.length; i++){
for(int j = 0; j<4; j++){
for(int k = 0; k<4; k++){
if(k==j) continue;
// ์ด์ ํ์์ ํ์ฌ ์ด์ ์ ์ธํ๊ณ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ๋๋ค.
dp[i][j] = Math.max(dp[i-1][k]+land[i][j], dp[i][j]);
}
}
}
// ๋ง์ง๋ง ํ์์ ๊ฐ์ฅ ์ ์๊ฐ ๋์ ์ด์ ์ฐพ๋๋ค.
for(int score: dp[land.length-1]){
answer = Math.max(score,answer);
}
return answer;
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์ / ๋๋ ์
ํ๋ก๊ทธ๋๋จธ์ค level 2 ๋จ๊ณ์ธ๋ฐ ์ ํ๋ ค์ ๊ธฐ๋ถ์ด ์ข์๋ค. ํ๋ฐฉ์ ์ ๋ต์ด๋ค๐
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ฐพ๊ธฐ (0) | 2022.03.27 |
---|---|
[Algorithm/Java][๋ฐฑ์ค] 9020 ๊ณจ๋๋ฐํ์ ์ถ์ธก (0) | 2022.03.26 |
[Algorithm/Java][๋ฐฑ์ค] 6603 ๋ก๋ (0) | 2022.03.21 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฆฐํฐ (0) | 2022.03.05 |
[Algorithm/Java][๋ฐฑ์ค] 14502 ์ฐ๊ตฌ์ (0) | 2022.03.05 |