풀이
DP를 사용하여 해결했습니다.
매번 memo[i] = arr[i]로 초기화시켜주고 이전까지 저장한 값에서 현재 더할 수를 더한 결과와 초기화한 값을 비교하여 더 큰 값을 저장하게했습니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static int N;
public static int[] arr = new int[100001];
public static int[] memo = new int[100001];
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine(), " ");
for (int i = 1; i <= N; ++i) {
arr[i] = Integer.parseInt(st.nextToken());
}
memo[1] = arr[1];
int answer = memo[1];
for (int i = 2; i <= N; ++i) {
memo[i] = arr[i];
if (memo[i - 1] + arr[i] > memo[i]) {
memo[i] = memo[i - 1] + arr[i];
}
answer = (answer < memo[i]) ? memo[i] : answer;
}
System.out.println(answer);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[Java] BOJ 11727번 2xn 타일링 2 (0) | 2021.04.09 |
---|---|
[Java] BOJ 10844번 쉬운 계단 수 (0) | 2021.04.08 |
[Java] BOJ 2156번 포도주 시식 (0) | 2021.04.02 |
[Java] BOJ 2193번 이친수 (0) | 2021.04.01 |
[Java] BOJ 1932번 정수 삼각형 (0) | 2021.03.31 |