반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
Integer[] dp;
int[] num;
int max;
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
dp = new Integer[n];
num = new int[n];
for(int i=0; i<n; i++){
num[i] = Integer.parseInt(st.nextToken());
}
dp[0] = num[0];
max = num[0];
recur(n-1);
System.out.println(max);
}
public int recur(int n){
if(dp[n]==null){
dp[n] = Math.max(recur(n-1)+num[n], num[n]);
max = Math.max(max, dp[n]);
}
return dp[n];
}
public static void main(String args[]) throws IOException {
new Main().solution();
}
}
Top down 식으로 문제를 풀었다.
현재 인덱스의 값과 연속된 인덱스의 합 중 큰 값을 저장해 가장 큰 값을 출력한다.
반응형
'개발 > 알고리즘' 카테고리의 다른 글
백준 14501번 : 퇴사 (0) | 2023.03.07 |
---|---|
백준 1699번 : 제곱수의 합 (2) | 2023.03.05 |
백준 14002번 : 가장 긴 증가하는 부분 수열 4 (0) | 2023.02.21 |
백준 11053번 : 가장 긴 증가하는 부분 수열 (0) | 2023.02.09 |
백준 2193번 : 이친수 (0) | 2023.02.06 |