PS
[๋ฐฑ์ค] 10211 Maximum Subarray with Python
ํ์ค_It's
2022. 3. 22. 17:03
728x90
๋ฐ์ํ
๐ BOJ 10211 Maximum Subarray
๐ก ์กฐ๊ฑด
ํฌ๊ธฐ N์ธ ์ ์ํ ๋ฐฐ์ด X๊ฐ ์์ ๋, X์ ๋ถ๋ถ ๋ฐฐ์ด(X์ ์ฐ์ํ ์ผ๋ถ๋ถ) ์ค
๊ฐ ์์์ ํฉ์ด ๊ฐ์ฅ ํฐ ๋ถ๋ถ ๋ฐฐ์ด์ ์ฐพ๋ Maximum subarray problem(์ต๋ ๋ถ๋ถ๋ฐฐ์ด ๋ฌธ์ )N๊ณผ ๋ฐฐ์ด X๊ฐ ์ฃผ์ด์ก์ ๋, X์ maximum subarray์ ํฉ์ ๊ตฌํ๋ ๋ฌธ์ .
๋ฐฐ์ด์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 1,000)
๋ฐฐ์ด X์ ๋ด์ฉ์ ๋ํ๋ด๋ N๊ฐ์ ์ ์๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ์ด๋ ์ฃผ์ด์ง๋ ์๋ ์ ๋๊ฐ์ด 1,000๋ณด๋ค ์์ ์ ์์ด๋ค.
๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin
for _ in range(int(stdin.readline())):
n = int(stdin.readline())
arr = list(map(int, stdin.readline().split()))
res = -int(1e9)
for i in range(n):
temp = arr[i]
if res < temp:
res = temp
for j in range(i + 1, n):
temp += arr[j]
if temp > res:
res = temp
print(res)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
2
5
1 2 3 4 5
5
2 1 -2 3 -5
์คํ๊ฒฐ๊ณผ
15
4
โจ๏ธ ๋ฌธ์ ํ์ด
i๋ฒ์งธ๋ฅผ ๊ธฐ์ค์ผ๋ก i + 1๋ฒ์งธ ์ซ์๋ถํฐ ๋ํ์ ๋, ์ต๋๊ฐ์ ๊ตฌํ์ฌ res์ ์ ์ฅํ๋ค
res ์ถ๋ ฅ
๐พ ๋๋์
๋ฐ์ํ