전체 방문자
오늘
어제
모달조아
Better than yesterday
모달조아
  • 분류 전체보기 (147)
    • PS (86)
      • BOJ (79)
      • 프로그래머스 (6)
    • 이론 (41)
      • 자료구조 (2)
      • 알고리즘 (8)
      • 데이터베이스 (1)
      • 운영체제 (1)
      • 네트워크 (3)
      • 디자인패턴 (7)
      • Java (13)
      • Spring (4)
      • JPA (1)
      • Git (1)
    • 개발 (18)
    • 프로젝트 (1)
    • 기록 (0)
      • 후기 (0)
    • etc (1)

최근 글

티스토리

hELLO · Designed By 정상우.
모달조아

Better than yesterday

PS/BOJ

BOJ 1912 연속합

2021. 7. 6. 19:38

boj 1912 연속합

간단한 DP 문제이다. a[i]는 수열이 담긴 배열이고, 테이블로 D[i]는 i번째 원소를 마지막으로 하는 연속된 수열 합의 최댓값이라고 정의한다. 합이므로 초기 값은 원소 자기 자신의 값이다. 그러므로 D[i] = a[i]로 초기화한다.
수열이 연속된다는 것을 인지하면 D[i] = max(D[i], D[i-1] + a[i]) 이라는 점화식이 쉽게 만들어진다.
각 수는 -1000에서 1000 사이이 수 이므로 ans는 초기 값으로 -1001을 주었다.
위 내용을 바탕으로 코드를 구현해보자.

#include <iostream>
#include <algorithm>
using namespace std;

int n;
int a[100005];
int D[100005];
int ans = -1001;

int main(void)
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];

    for (int i = 1; i <= n; i++)
    {
        D[i] = a[i];
        D[i] = max(D [i], D[i - 1] + a[i]);
        ans = max(ans, D[i]);
    }

    cout << ans;
}
저작자표시 (새창열림)

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

BOJ 1699 제곱수의 합  (0) 2021.07.08
BOJ 2579 계단 오르기  (0) 2021.07.08
BOJ 11054 가장 긴 바이토닉 부분 수열  (0) 2021.07.06
BOJ 11722 가장 긴 감소하는 부분 수열  (0) 2021.07.04
BOJ 11055 가장 큰 증가 부분 수열  (0) 2021.07.04
    'PS/BOJ' 카테고리의 다른 글
    • BOJ 1699 제곱수의 합
    • BOJ 2579 계단 오르기
    • BOJ 11054 가장 긴 바이토닉 부분 수열
    • BOJ 11722 가장 긴 감소하는 부분 수열
    모달조아
    모달조아

    티스토리툴바