[백준] - 1912번: 연속합(Java)

병찬·2022년 7월 30일
0

Baekjoon Online Judge

목록 보기
15/18
post-thumbnail

문제📝


풀이💡

  • 입력한 숫자들을 sum에 더해주고 Math.max()를 이용해서 현재까지 값들을 이용해서 최대값을 구별한다.
  • 모든 원소가 음수일 경우에는 정렬에서 가장 첫 번째 수를 출력한다.

코드💻

// 백준 Silver2 - 1912(연속합)
// 문제링크: https://www.acmicpc.net/problem/1912

import java.util.*;

public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int sum = 0;
		int ans = 0;
		int arr[] = new int[n];
		
		for(int i=0; i<n; i++) {
			arr[i] = sc.nextInt();
		}
		
		for(int i=0; i<n; i++) {
			sum += arr[i];
			if(sum<0)
				sum = 0;
			ans = Math.max(ans,sum);
		}
		
		if(ans==0) { // 모든 원소가 음수인 경우
			Arrays.sort(arr);
			System.out.println(arr[arr.length-1]);
		}else {
			System.out.println(ans);
		}
	}
}

결과😎


느낀점👨‍💻

처음에는 어떻게 해야 될지 생각을 하다가 수들을 더해주다가 현재 더한 숫자들을 활용해서 최대값을 구하면 되는 것을 알게 되고 해결할 수 있었다.


Sinbmil의 알고리즘 문제 코드

-> https://github.com/Sinbmil/Algorithm-Study

profile
코딩을 열심히 하고 있습니다:)

0개의 댓글