Algorithm/BOJ
BOJ 1912 연속합
wow
2021. 4. 1. 00:16
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