백준: 1912(연속합)

강지안·2023년 7월 14일
0

baekjoon

목록 보기
106/186

문제

코드

231013 수정한 코드

import java.util.Scanner;

public class 1912 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int[] numbers = new int[n];
        int[] memo = new int[n+1];
        for(int i=0; i<n; i++) numbers[i] = sc.nextInt();

        int max = memo[0] = numbers[0];
        for(int i=1; i<numbers.length; i++) {
            memo[i] = Math.max(memo[i-1] + numbers[i], numbers[i]);
            if(memo[i] > max) max = memo[i];
        }

        System.out.print(max);
    }

}
import java.util.Scanner;

public class q1912 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] array = new int[n];
        int[] memo = new int[n+1];
        for(int i=0; i<array.length; i++) {
            array[i] = sc.nextInt();
        }

        // 다음 걸 더했을 때 현재보다 수가 작아지면 안됨
        int max = memo[0] = array[0];
        for(int i=1; i<array.length; i++) {
            int temp;

            // array[i]가 양수인 경우
            if(array[i] > 0) {
                if(memo[i-1] > 0) temp = memo[i-1] + array[i];
                else temp = array[i];

                if(max < temp) max = temp;
            }
            // array[i]가 음수인 경우
            else {
                // 더한 값이 양수일 경우
                if(memo[i-1] + array[i] > 0) {
                    temp = memo[i-1] + array[i];
                    if(max < temp) max = temp;
                }
                // 더한 값이 음수인 경우
                else {
                    if(memo[i-1] <= array[i]) {
                        temp = array[i];
                        if(max < array[i]) max = array[i];
                    }
                    else temp = 0;
                }
            }
            memo[i] = temp;
        }
        System.out.println(max);
    }
}

0개의 댓글