www.acmicpc.net/problem/1912

 

1912번: 연속합

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

www.acmicpc.net

 

 

문제 분석

- 각 배열에 직전까지의 최대 합을 구해서 저장한다. 

- 각 배열의 결과를 정답을 저장할 변수와 비교하여 최대값을 갱신한다.

 

 

문제 풀이

1) 배열의 값을 입력받는다.

2) 직전까지의 최대 합과 현재 배열의 값을 비교하여 더 큰 값을 넣어준다.

3) 정답을 담은 변수와 해당 배열의 값을 비교하여 정답에 최대값을 갱신한다. 

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	private static int[] map;
	private static int ans;

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

		int N = Integer.parseInt(br.readLine());
		map = new int[N+1];
		StringTokenizer st = new StringTokenizer(br.readLine());
		ans = Integer.MIN_VALUE;
		for (int i = 1; i <= N; i++) { 
			map[i] = Integer.parseInt(st.nextToken());
			map[i] = Math.max(map[i-1]+map[i], map[i]);
			ans = Math.max(ans, map[i]);
		}

		System.out.println(ans);

	}// main

}// class-end

'Algorithm > BOJ' 카테고리의 다른 글

BOJ 1932 정수 삼각형  (0) 2021.04.07
BOJ 1890 점프  (0) 2021.04.07
BOJ 1463 1로만들기  (0) 2021.03.31
BOJ 9461 파도반 수열  (0) 2021.03.31
BOJ 1003 피보나치 함수  (0) 2021.03.31