๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 10211_Maximum Subarray

๋ฟŒ์•ผ._. 2021. 11. 1. 16:47

Silver III

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/10211)

<Maximum Subarray>

๋ฌธ์ œ 

 

ํฌ๊ธฐ N์ธ ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด X๊ฐ€ ์žˆ์„ ๋•Œ, X์˜ ๋ถ€๋ถ„ ๋ฐฐ์—ด(X์˜ ์—ฐ์†ํ•œ ์ผ๋ถ€๋ถ„) ์ค‘ ๊ฐ ์›์†Œ์˜ ํ•ฉ์ด ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„
๋ฐฐ์—ด์„ ์ฐพ๋Š” Maximum subarray problem(์ตœ๋Œ€ ๋ถ€๋ถ„ ๋ฐฐ์—ด ๋ฌธ์ œ)์€ ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ๋งค์šฐ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.
์—ฌ๋Ÿฌ๋ถ„์€ N๊ณผ ๋ฐฐ์—ด X๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, X์˜ maximum subarray์˜ ํ•ฉ์„ ๊ตฌํ•˜์ž.
์ฆ‰, max1 โ‰ค i โ‰ค  j โ‰ค N (X [i]+...+X [j])๋ฅผ ๊ตฌํ•˜์ž.

 

์ž…๋ ฅ

 

์ž…๋ ฅ ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ž์—ฐ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
๊ทธ๋‹ค์Œ์—๋Š” T๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ณ„๋กœ ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 1,000)
๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ ์ค„์— ๋ฐฐ์—ด X์˜ ๋‚ด์šฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” N๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง„๋‹ค.
์ด๋•Œ ์ฃผ์–ด์ง€๋Š” ์ˆ˜๋Š” ์ ˆ๋Œ“๊ฐ’์ด 1,000๋ณด๋‹ค ์ž‘์€ ์ •์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ 

 

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ณ„๋กœ maximum subarray์˜ ํ•ฉ์„ ์ค„๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

import sys

if __name__=='__main__':
    T=int(input()) # ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ˆ˜

    for i in range(T):
        N=int(input()) # ํฌ๊ธฐ
        arr=list(map(int, sys.stdin.readline().split())) # X์˜ ๋‚ด์šฉ

        maxsum=min(arr) # ์ตœ์†Ÿ๊ฐ’์„ maximum์œผ๋กœ ์„ค์ •
        for j in range(len(arr)):
            sum = 0
            for k in range(j,len(arr)):
                sum+=arr[k]
                if sum>maxsum: # maximum subarray ์ฐพ๊ธฐ
                    maxsum=sum
        print(maxsum)

 

  • Maximum subarray๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ ํ™œ์šฉ
  • ์ด์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐ ๊ตฌ๊ฐ„๋งˆ๋‹ค maximum์ธ์ง€ ํ™•์ธ

์ƒ๊ฐ๐Ÿค”

 

์ด์ค‘ for๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ ๊นŒ ๋ด ๊ณ ๋ฏผํ–ˆ์ง€๋งŒ, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์•„ ์ฒ˜์Œ ์ƒ๊ฐ๋Œ€๋กœ

๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ์ฒ˜์Œ์— maxsum์„ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ์ž˜๋ชปํ•ด์ค€ ๊ฒƒ ๋ง๊ณ ๋Š” ๋‹ค๋ฅธ ๋ฌธ์ œ์ ์ด ์—†์—ˆ๋‹ค.