본문 바로가기
알고리즘/백준

[Java] BOJ 1912번 연속합

by 컴공맨 2021. 4. 7.
 

1912번: 연속합

첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net


풀이

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);
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com

 

'알고리즘 > 백준' 카테고리의 다른 글

[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