[BOJ] 1912 연속합 (Java)

김도운·2021년 9월 14일
0

알고리즘

목록 보기
4/13
post-thumbnail

https://www.acmicpc.net/problem/14502

알고리즘

DP

풀이

  1. 최적의 연속합에 현재 인덱스 값을 더한 값과 현재 인덱스 값을 비교한다.
  2. 전자값이 더 크다면 값을 업데이트한다.
  3. 매번 연속합이 구해질때마다 answer를 업데이트한다.

코드

import java.io.*;
import java.util.*;

public class Main_1912_연속합 {

	static int N, answer, numbers[], dp[];
	
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		N = Integer.parseInt(br.readLine());
		numbers = new int[N];
		dp = new int[N];
		
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<N; i++) numbers[i] = Integer.parseInt(st.nextToken());
		
		answer = dp[0] = numbers[0];
		
		for(int i=1; i<N; i++) {
			dp[i] = Math.max(dp[i-1]+numbers[i], numbers[i]);
			answer = Math.max(dp[i], answer);
		}
		
		System.out.println(answer);
		br.close();
	}

}
profile
김돈돈

0개의 댓글