๋ฌธ์
n๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์์ ์์ด์ด ์ฃผ์ด์ง๋ค. ์ฐ๋ฆฌ๋ ์ด ์ค ์ฐ์๋ ๋ช ๊ฐ์ ์๋ฅผ ์ ํํด์ ๊ตฌํ ์ ์๋ ํฉ ์ค ๊ฐ์ฅ ํฐ ํฉ์ ๊ตฌํ๋ ค๊ณ ํ๋ค. ๋จ, ์๋ ํ ๊ฐ ์ด์ ์ ํํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด์ 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 ์ด๋ผ๋ ์์ด์ด ์ฃผ์ด์ก๋ค๊ณ ํ์. ์ฌ๊ธฐ์ ์ ๋ต์ 12+21์ธ 33์ด ์ ๋ต์ด ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์ด์ง๊ณ ๋์งธ ์ค์๋ n๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง๋ค. ์๋ -1,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
10
10 -4 3 1 5 6 -35 12 21 -1
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
33
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
10
2 1 -4 3 4 -4 6 5 -5 1
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
14
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
5
-1 -2 -3 -4 -5
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
-1
ํ์ด๊ณผ์
์ด์ ์ ํ๋ ค๊ณ ํ์๋๋ฐ ์คํจํ์๋ ๋ฌธ์ ๋ฅผ ์ด๋ฒ์ ์๋กญ๊ฒ ํ์ด๋ณด๋ ์๊ฐ์ ๊ฐ์ก์์ต๋๋ค.
์ด์ ์ ๊ตฐ๋์ ๋ค์ด๊ฐ๊ธฐ์ 3๋ ์ ์ฏค์ ๋์ ํ๋ค๊ฐ ํ๋ฆฌ๊ณ ๋ชจ๋ฅด๊ฒ ๋คํ๊ณ ์๊ฑด๋๋ ธ์๋ ๋ฌธ์ ์์๋๋ฐ ์ด๋ฒ์ ๋ค์ ๋์ ํ๊ฒ ๋์์ต๋๋ค.
#include <stdio.h>
int a[100000];
int main(void) {
int n, i, j, num = 0, b = -1000;
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for(i = 0; i < n; i++) {
if(b < a[i]) b = a[i];
if(a[i] > 0) {
num = 0;
for(j = i; ; j++) {
if(a[j] >= 0 && j <= n)
num += a[j];
else break;
}
if(b < num) b = num;
}
}
printf("%d", b);
return 0;
}
์ด์ ์ ๋ง๋ค์๋ ์ฝ๋๋ฅผ ๋ณด๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ปดํจํฐ๋ก ์ง์ ๋๋ฆด๋ ค๊ณ ํ๊ณ ๋๋ฌด ์ด๋ ต๊ฒ ์๊ฐ์ ํด์ 2์คfor๋ฌธ๊น์ง ์ฌ์ฉํด๊ฐ๋ฉฐ ํ๋ ค๊ณ ํ๋๊ฑฐ ๊ฐ์ต๋๋ค. ๊ทธ๋์ ์ง๊ธ ๋ค์ ๋ฌธ์ ๋ฅผ ๋ด๋ณด๋
์๊ฐ์ ํ์ด 1์ด์ ์ถ๊ฐ์๊ฐ์์์ด ๋์์๋๊ฑฐ๋ฅผ ๋ณด๋ ๋ณต์กํ๊ฒ ์๊ฐํ ํ์์์ด ๋ก์ง์ ์ต๋ํ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑ์ ํด๋ ํ ์ ์๋ค๋ ์ ์ ๋ณด๊ณ ์ด๋ป๊ฒํด์ผ ์์ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑํ๊ณ ํ ์ ์์๊น๋ ๊ณ ๋ฏผํด๋ดค์์ต๋๋ค.
๊ทธ๋๋ณด๋ ์ง์ง ๋ณต์กํ๊ฒ ์๊ฐํ ํ์์์ด ๋ฌธ์ ๋ฅผ ์ ๊ทผํ๋ฉด ํ ์ ์๋๋ค๋ ์ ์ ๊นจ๋ซ๊ณ ์๋กญ๊ฒ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์ฌ ํด๊ฒฐํ์์ต๋๋ค.
code
#include <iostream>
int main(void)
{
int n, temp;
long long max = -1001, sum = 0;
std::cin >> n;
for(int i = 0; i < n; i++) {
std::cin >> temp;
sum += temp;
if (max < sum) max = sum;
if (sum < 0) sum = 0;
}
std::cout << max;
return (0);
}
ํ๊ธฐ
์กฐ๊ธ ๋ ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ์๊ฐํ์ผ๋ฉด ๊ธ๋ฐฉ ํ์์ ๋ฌธ์ ์ธ๊ฑฐ๊ฐ์๋ฐ ์ ๊ทผ์ ๋๋ฌด ์ด๋ ต๊ฒ ๋ค๊ฐ๊ฐ์ ๋ ํ๋ค์๋ ๊ฑฐ ๊ฐ๋ค.
๋ก์ง์ ์กฐ๊ธ ๋ ๊น๊ฒ ์๊ฐ์ ํด์ ์ด๋ป๊ฒ ํด์ผ ๊ฐ์ฅ ์ข์ ๋ก์ง์ ์์ธ ์ ์์์ง ๊ณ ๋ฏผ์ ํด๋ด์ผํ ๊ฒ ๊ฐ๋ค.
'Algorithm > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 7795๋ฒ - ๋จน์ ๊ฒ์ธ๊ฐ ๋จนํ ๊ฒ์ธ๊ฐ (C++) (0) | 2023.07.07 |
---|---|
[๋ฐฑ์ค] 2193๋ฒ - ์ด์น์ (C++) (0) | 2023.07.06 |
[๋ฐฑ์ค] 11501๋ฒ - ์ฃผ์ (C++) (0) | 2023.07.04 |
[๋ฐฑ์ค] 12018๋ฒ - Yonsei TOTO (C++) (0) | 2023.07.04 |
[๋ฐฑ์ค] 1260๋ฒ - DFS์ BFS (C++) (0) | 2023.07.02 |