일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- #알고리즘 #백준 #2573 #백준2573 #algorithm #baekjoon #baekjoon2573 #C++
- #알고리즘 #백준 #15683 #백준15683 #algorithm #baekjoon #baekjoon15683 #C++
- CleanCode
- #알고리즘 #백준 #17136 #백준17136 #algorithm #baekjoon #baekjoon17136 #C++
- #알고리즘 #백준 #1793 #백준1793 #algorithm #baekjoon #baekjoon1793 #C++
- #알고리즘 #백준 #14888 #백준14888 #algorithm #baekjoon #baekjoon14888 #C++
- #알고리즘 #백준 #1260 #백준1260 #algorithm #baekjoon #baekjoon1260 #Java
- 책리뷰
- #알고리즘 #백준 #12094 #백준12094 #algorithm #baekjoon #baekjoon12094 #C++
- #알고리즘 #백준 #1525 #백준1525 #algorithm #baekjoon #baekjoon1525 #C++
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #문자열압축 #programmers #C++
- #알고리즘 #백준 #2616 #백준2616 #algorithm #baekjoon #baekjoon2616 #Java
- 클린코드
- #알고리즘 #백준 #17837 #백준17837 #algorithm #baekjoon #baekjoon17837 #C++
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #외벽점검 #programmers #C++
- #알고리즘 #백준 #4386 #백준4386 #algorithm #baekjoon #baekjoon4386 #C++
- #알고리즘 #백준 #5214 #백준5214 #algorithm #baekjoon #baekjoon5214 #C++
- #알고리즘 #백준 #3190 #백준3190 #algorithm #baekjoon #baekjoon3190 #C++
- #알고리즘 #백준 #1987 #백준1987 #algorithm #baekjoon #baekjoon1987 #Java
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #블록이동하기 #programmers #C++
- 개발서
- #알고리즘 #백준 #15684 #백준15684 #algorithm #baekjoon #baekjoon15684 #C++
- #알고리즘 #백준 #17406 #백준17406 #algorithm #baekjoon #baekjoon17406 #C++
- #알고리즘 #백준 #2352 #백준2352 #algorithm #baekjoon #baekjoon2352 #C++
- 개발자취미
- #알고리즘 #algorithm #프로그래머스 #2020카카오공채 #괄호변환 #programmers #C++
- 스레드 #동시성 #thread #process #
- #알고리즘 #백준 #17140 #백준17140 #algorithm #baekjoon #baekjoon17140 #C++
- #알고리즘 #백준 #17472 #백준17472 #algorithm #baekjoon #baekjoon17472 #C++
- #알고리즘 #백준 #2580 #백준2580 #algorithm #baekjoon #baekjoon2580 #Java
Archives
- Today
- Total
개발자 일기장.
백준 1912문제. 본문
연속합 문제
Problem?
n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다.
예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다.
즉, 최대합을 만들자
Input
첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.
Output
첫째 줄에 답을 출력한다.
Solution
DP(Dynamic Programming) 문제 중 하나
가정 A(n) : input 배열 SUM(n) : n번째의 값이 포함된 연속된 임의의 수 배열의 최댓값 max_num : 그 전까지 경우를 모두 포함한 최댓값 (우리가 원하는 답) |
SUM(n)을 구하는 방법은 "SUM(n-1) + A(n)"과 "A(n)" 중에서 큰 값을 고르면 된다.
max_num을 구하는 방법은 그 전의 max_num과 SUM(n) 중에서 큰 값을 고르면 된다.
Code
#include <iostream>
using namespace std;
#define COUNT_MAX 100001
int max(int a, int b) {
if (a >= b)
return a;
return b;
}
int main(void) {
int N;
int A[COUNT_MAX];
int SUM[COUNT_MAX];
int max_num;
cin >> N;
for (int i = 1; i <= N; i++) {
scanf("%d", &A[i]);
}
SUM[1] = A[1];
max_num = A[1];
for (int i = 2; i <= N; i++) {
SUM[i] = max(SUM[i - 1] + A[i], A[i]);
max_num = max(max_num, SUM[i]);
}
cout << max_num << endl;
return 0;
}
오랜만에 코딩을 다시 시작해서 어려운 점이 많다.
하루에 하나씩 문제 푸는게 목표
'취업 > Algorithm.' 카테고리의 다른 글
백준 11053문제. (0) | 2020.02.23 |
---|---|
백준 1074문제. (0) | 2020.02.22 |
백준 11650문제. (0) | 2020.02.15 |
백준 10250문제. (0) | 2020.02.12 |
백준 2156문제. (0) | 2020.02.09 |