๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 10211๋ฒˆ - Maximum Subarray

by ์•ˆ์ฃผํ˜• 2022. 1. 4.

๋ฌธ์ œ

 

10211๋ฒˆ: Maximum Subarray

ํฌ๊ธฐ N์ธ ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด X๊ฐ€ ์žˆ์„ ๋•Œ, X์˜ ๋ถ€๋ถ„ ๋ฐฐ์—ด(X์˜ ์—ฐ์†ํ•œ ์ผ๋ถ€๋ถ„) ์ค‘ ๊ฐ ์›์†Œ์˜ ํ•ฉ์ด ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์ฐพ๋Š” Maximum subarray problem(์ตœ๋Œ€ ๋ถ€๋ถ„๋ฐฐ์—ด ๋ฌธ์ œ)์€ ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ๋งค์šฐ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <algorithm>

int dp[1001],arr[1001];
using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int T; cin>>T;
    while(T--){
        int n; cin>>n;
        for(int i=0; i<n; i++){
            cin>>arr[i];
        }
        int ans = arr[0];
        dp[0]= arr[0];
        
        for(int i=1; i<n; i++){
            dp[i] = max(dp[i-1]+arr[i],arr[i]);
            ans = max(dp[i],ans);
        }
        cout<<ans<<'\n';
    }
}

 

ํ’€์ด

๋ฐฐ์—ด์˜ ์—ฐ์†์ ์ธ ์›์†Œ๋“ค์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ์•„๋‚ด๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋กœ ํฌ๊ฒŒ ์„ค๋ช…ํ•  ๋ถ€๋ถ„์€ ์—†๊ธฐ์— ์กฐ๊ฑด๋ฌธ๋งŒ ์ž˜ ์‚ดํŽด๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€