https://school.programmers.co.kr/learn/courses/30/lessons/43105
1. ๋ฌธ์
์ฃผ์ด์ง ์ผ๊ฐํ์์ ํฉ์ด ๊ฐ์ฅ ํด ๋์ ํฉ์ ๋ฐํํ๋ค.
2. ํ์ด
1์ฐจ : ๊ฐ๊ฐ์ ์์น ๋ง๋ค ์, ์ผ์ชฝ ์๋ฅผ ๊ฒ์ฌํ๋ ๋ฐฉ์
2์ฐจ : ๋งจ ์ผ์ชฝ ์ค, ๋งจ ์ค๋ฅธ์ชฝ ์ค, ๊ฐ์ด๋ฐ๋ก ๋๋์ด
๋งจ ์ผ์ชฝ ์ค์ ์ ๋ ์๋ง ๊ฒ์ฌ
๋งจ ์ค๋ฅธ์ชฝ ์ค์ ์ผ์ชฝ ์ ๋ ์๋ง ๊ฒ์ฌ
๊ฐ์ด๋ฐ๋ ์ ๋ ์, ์ผ์ชฝ ์ ๋ ์ ๋ ๋ค ๊ฒ์ฌํ๋ ๋ฐฉ์์ด๋ค.
1์ฐจ ๋ณด๋ค๋ 2์ฐจ์ ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋ ์ข์๋ค.
3. ์ฝ๋
1์ฐจ -> ์ด์คfor๋ฌธ
๋๋ณด๊ธฐ
import java.io.*;
import java.util.*;
class Solution {
public int solution(int[][] triangle) {
int ans = 0;
int N = triangle.length;
int[][] dp = new int[N][N];
dp[0][0] = triangle[0][0];
ans = dp[0][0];
for (int i=1; i<N; i++) {
for (int j=0; j<=i; j++) {
if (j-1 >= 0) {
dp[i][j] = dp[i-1][j-1]+triangle[i][j];
}
if (dp[i-1][j] != 0) {
dp[i][j] = Math.max(dp[i][j], dp[i-1][j]+triangle[i][j]);
}
ans = Math.max(ans, dp[i][j]);
}
}
return ans;
}
}
2์ฐจ -> ๋จ์ผ for๋ฌธ
๋๋ณด๊ธฐ
import java.io.*;
import java.util.*;
class Solution {
public int solution(int[][] triangle) {
int ans = 0;
int N = triangle.length;
int[][] dp = new int[N][N];
dp[0][0] = triangle[0][0];
ans = dp[0][0];
for (int i=1; i<N; i++) {
// ๋งจ ์ผ์ชฝ ์ค
dp[i][0] = dp[i-1][0] + triangle[i][0];
// ๋งจ ์ค๋ฅธ์ชฝ ์ค
dp[i][i] = dp[i-1][i-1] + triangle[i][i];
// ๊ฐ์ด๋ฐ
for (int j=1; j< i; j++) {
dp[i][j] = Math.max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j];
}
}
for (int i=0; i<N; i++) {
ans = Math.max(ans, dp[N-1][i]);
}
return ans;
}
}
4. ์ฌ๋ด
๋ฌธ์ ๋ฅผ ํ์์ด๋ ์ด๊ฑฐ ๋ค์ ์ง๋ผ๋ฉด ๋ชป์งค ๊ฒ ๊ฐ์๋ฐ? ์ถ์ ์ฝ๋๋ ์ง์ํ๊ฒ ๋๋ ๊ฒ ๊ฐ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ํ ๋๋ ํด๋ฆฐ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ๋ฉด์ ํ์
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ์ผ๊ทผ ์ง์ - Java (0) | 2023.08.22 |
---|---|
[Programmers] ์ต๊ณ ์ ์งํฉ - Java (0) | 2023.08.20 |
[Programmers] ์ด์ค์ฐ์ ์์ํ - Java (0) | 2023.08.17 |
[Programmers] ์ ํ์ ์๊ฐ์ด๋ - Java (0) | 2023.08.11 |
[Programmers] ๊ตฌ๋ช ๋ณดํธ - Java (0) | 2023.07.10 |