๐ค๋ฌธ์ ์ดํด
์ฐ์๋ ๋ช ๊ฐ์ ์๋ฅผ ์ ํํ์ ๋ ๊ทธ ํฉ์ด ๊ฐ์ฅ ํฐ ์์ด์ ํฉ์ ์ถ๋ ฅํ๋๋ฐ ๊ทธ ์์ด ์ค์์ ํ๋๋ฅผ ์์จ ์ ์๋ ๋ฌธ์ ์ด๋ค.
๐ก์ฒซ๋ฒ์งธ ์์ด๋์ด
ํ๋๋ฅผ ์ด๋ป๊ฒ ์์จ๊น ํ๋ค๊ฐ ๋ฐ๋ก ์ ์ ํผ ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด์ด ๋ ์ฌ๋๋ค.
์์์ ์์๋๋ก ํฉ์ด ๊ฐ์ฅ ํฐ ์ฐ์ํฉ1์ ๊ตฌํด์ฃผ๊ณ , ๋ค์์ ์์๋๋ก ํฉ์ด ๊ฐ์ฅ ํฐ ์ฐ์ํฉ2์ ๊ตฌํด์ฃผ๊ณ ์ด๋ ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์์ผ๋ก ์ฐ์ํฉ1๊ณผ 2๋ฅผ ๋ํ ๊ฐ์ด ๊ฐ์ฅ ํฌ๋ค๋ฉด ๊ทธ ๊ธฐ์ค ์ซ์๋ฅผ ์์ค ๊ฒ์ด ๋ ํฐ๊ฑฐ๊ณ , ์ฐ์ํฉ1์ ์ต๋๊ฐ์ด ๊ฐ์ฅ ํฌ๋ค๋ฉด ํ๋๋ฅผ ์์ ์ง ์์๋ ๊ฐ์ฅ ํฐ ์ฐ์ํฉ์ ๊ตฌํ ์ ์๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํด์ ํ์๋ค.
๐ฅํ์ด๐ฅ
dp[i]๋ i๋ฒ์งธ ์๋ฅผ ๋ง์ง๋ง ์๋ก ํ์ ๋ ๊ฐ์ฅ ํฐ ์ฐ์ํฉ์ ์๋ฏธํ๋ค.
dp2[i]๋ i๋ฒ์งธ ์๋ฅผ ์ฒซ๋ฒ์งธ ์๋ก ํ์ ๋ ๊ฐ์ฅ ํฐ ์ฐ์ํฉ์ ์๋ฏธํ๋ค.
1. dp์ dp2๋ฅผ ๋ชจ๋ ์ ๋ ฅ๋ ์์ด๋ก ์ด๊ธฐํํ๊ณ , 0๋ฒ์งธ dp๋ฅผ maxInt๋ก ์ด๊ธฐํํ๋ค.
2. i๋ 1๋ถํฐ n-1๊น์ง๋ก dp[i]์ dp[i-1]+arr[i]๊ณผ ๋น๊ตํด์ ๋ ํฐ ๊ฐ์ dp[i]์ ๋ฃ์ด์ฃผ๊ณ , maxInt์ dp[i]๋ฅผ ๋น๊ตํด ๋ ํฐ ๊ฐ์ maxInt์ ๋ฃ์ด์ค๋ค.
3. i๋ n-2๋ถํฐ 0๊น์ง๋ก dp2[i]์ dp2[i+1]+arr[i]๊ณผ ๋น๊ตํด์ ๋ ํฐ ๊ฐ์ dp2[i]์ ๋ฃ์ด์ฃผ๊ณ , maxInt์ dp2[i]๋ฅผ ๋น๊ตํด ๋ ํฐ ๊ฐ์ maxInt์ ๋ฃ์ด์ค๋ค.
4. dp2์ n-1๋ฒ์งธ ๊ฐ๊ณผ dp2[0]๋ฒ์งธ ๊ฐ์ maxInt์ ๋น๊ตํด ๋ ํฐ ๊ฐ์ maxInt์ ๋ฃ์ด์ค๋ค.
5. i๋ 1๋ถํฐ n-1๊น์ง๋ก i๋ฒ์งธ ์ซ์๋ฅผ ์ ์ธํ dp[i-1]+dp2[i+1]์ ๊ฐ์ maxInt์ ๋น๊ตํด ๋ ํฐ ๊ฐ์ maxInt์ ๋ฃ์ด์ค๋ค.
5. maxInt๊ฐ ์ถ๋ ฅ!
โํธ๋ฌ๋ธ ์ํ
maxInt๋ฅผ ์ ๋ฐ์ดํธํด์ฃผ๋ ๊ณผ์ ์ด ์ธ์ธํ๊ฒ ๋ค์ด๊ฐ์ผ ํ๋ค.
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
long long dp[100001];
long long dp2[100001];
long long arr[100001];
int n;
long long maxInt;
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
dp[i] = arr[i];
dp2[i] = arr[i];
}
maxInt = dp[0];
for (int i = 1; i < n; i++) {
dp[i] = max(dp[i], dp[i - 1] + arr[i]);
maxInt = max(maxInt, dp[i]);
}
for (int i = n - 2; i >= 0; i--) {
dp2[i] = max(dp2[i], dp2[i + 1] + arr[i]);
maxInt = max(maxInt, dp2[i]);
}
maxInt = max(maxInt, dp2[n-1]);
maxInt = max(maxInt, dp2[0]);
for (int i = 1; i < n; i++) {
long long tmp = dp[i - 1] + dp2[i + 1];
if (tmp > maxInt) maxInt = tmp;
}
cout << maxInt;
}
'๋ฐฑ์ค > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 17143๋ฒ ๋์์ (0) | 2022.07.26 |
---|---|
[๋ฐฑ์ค/C++] 1766๋ฒ ๋ฌธ์ ์ง (0) | 2022.07.21 |
[๋ฐฑ์ค/C++] 11054๋ฒ ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด (0) | 2022.07.20 |
[๋ฐฑ์ค/C++] 11053๋ฒ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2022.07.20 |
[๋ฐฑ์ค/C++] 5021๋ฒ ์์๊ณ์น (0) | 2022.07.18 |