백준(Java)/23년 5월
[Java] 백준 - 1932번: 정수 삼각형
C0MPAS
2023. 5. 17. 13:03
5월 17일(수) - 동적 계획법 1 (1932번)
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제점
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이
(C언어 풀이 활용)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[][] triangle;
static int[][] dp;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
triangle = new int[N+1][N+1];
dp = new int[N+1][N+1];
for(int i=1; i<N+1; i++)
{
st = new StringTokenizer(br.readLine(), " ");
for(int j=1; j<i+1; j++)
{
triangle[i][j] = Integer.parseInt(st.nextToken());
}
}
dp[1][1] = triangle[1][1];
for(int i=2; i<N+1; i++)
{
for(int j=1; j<i+1; j++)
{
if(j==1)
{
dp[i][j] = triangle[i][j] + dp[i-1][j];
}
else if(j==i)
{
dp[i][j] = triangle[i][j] + dp[i-1][j-1];
}
else
{
dp[i][j] = triangle[i][j] + Math.max(dp[i-1][j-1], dp[i-1][j]);
}
}
}
int max=0;
for(int j=1; j<N+1; j++)
{
if(max < dp[N][j])
{
max = dp[N][j];
}
}
System.out.println(max);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ