PS

[๋ฐฑ์ค€] 10211 Maximum Subarray with Python

ํ˜•์ค€_It's 2022. 3. 22. 17:03
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ BOJ 10211 Maximum Subarray

๐Ÿ’ก ์กฐ๊ฑด

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

  2. N๊ณผ ๋ฐฐ์—ด X๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, X์˜ maximum subarray์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.

  3. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 1,000)

  4. ๋ฐฐ์—ด X์˜ ๋‚ด์šฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” N๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ ์ฃผ์–ด์ง€๋Š” ์ˆ˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 1,000๋ณด๋‹ค ์ž‘์€ ์ •์ˆ˜์ด๋‹ค.

  5. ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์˜ ๋ฌธ์ œ

๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

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

โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

  1. i๋ฒˆ์งธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ i + 1๋ฒˆ์งธ ์ˆซ์ž๋ถ€ํ„ฐ ๋”ํ–ˆ์„ ๋•Œ, ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜์—ฌ res์— ์ €์žฅํ•œ๋‹ค

  2. res ์ถœ๋ ฅ

๐Ÿ’พ ๋А๋‚€์ 

๋ฐ˜์‘ํ˜•