본문 바로가기
알고리즘(코딩테스트)

백준 1912번 연속합(JAVA)

qbang 2022. 3. 2.

문제

 

1912번: 연속합

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

www.acmicpc.net

 

풀이

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        String[] line = br.readLine().split(" ");

        int[] arr = new int[n];
        int[] dp = new int[n];

        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(line[i]);
        }

        int max = dp[0] = arr[0]; // dp[0]은 이전까지의 최대값이 없으므로 arr[0]으로 초기화한다.

        // (바로 전까지의 최댓값에서 현재 값을 더하기) or (모든 값을 버리고 현재 값을 더하기) 중 최댓값을 고른다.
        for (int i = 1; i < n; i++) {
            dp[i] = Math.max(dp[i - 1] + arr[i], arr[i]);
            max = Math.max(max, dp[i]);
        }

        System.out.println(max);
    }
}

'알고리즘(코딩테스트)' 카테고리의 다른 글

백준 23971번 ZOAC 4(JAVA)  (1) 2024.02.27
백준 1655번 가운데를 말해요  (0) 2023.05.09
백준 2294번 동전 2(JAVA)  (0) 2022.03.02
백준 15683번 감시(JAVA)  (0) 2022.03.02
백준 1149번 RGB거리(JAVA)  (0) 2022.03.01

댓글