ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

13398๋ฒˆ: ์—ฐ์†ํ•ฉ 2

์ฒซ์งธ ์ค„์— ์ •์ˆ˜ n(1 ≤ n ≤ 100,000)์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” n๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” -1,000๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ด์ „์— ํ’€์—ˆ๋˜ 1912 ์—ฐ์†ํ•ฉ์—์„œ ํ•˜๋‚˜์˜ ์ˆซ์ž๋ฅผ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ์ถ”๊ฐ€๋œ ๋ฌธ์ œ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ ํ’€์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  1. ์•„๋ฌด๊ฒƒ๋„ ๋นผ์ง€ ์•Š๋Š” ์—ฐ์†ํ•ฉ์„ ๋ฉ”๋ชจ ์ด์ œ์ด ์…˜ ํ•œ๋‹ค.
  2. ๊ตฌํ•ด์ง„ ์—ฐ์†ํ•ฉ์—์„œ ์ค‘๊ฐ„์— ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ํ•œ๋‹ค.

 1๋ฒˆ์˜ ๊ฒฝ์šฐ๋Š” ์—ฐ์†ํ•ฉ ๋ฌธ์ œ์—์„œ ๋‹ค๋ฃจ์—ˆ๋‹ค. ๊ทธ๋Ÿผ 2๋ฒˆ์˜ ๊ฒฝ์šฐ๋Š” ์–ด๋–ค์‹์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์„๊นŒ? ์กฐ๊ธˆ๋งŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 4๊ฐœ์˜ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด OOXO์™€ ๊ฐ™์ด 2๋ฒˆ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ œ์™ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด 1๋ฒˆ์œผ๋กœ ๊ตฌํ•ด์ง„ ๋ฉ”๋ชจ์ด์ œ์…˜์˜ 1๋ฒˆ ์ธ๋ฑ์Šค์™€ ํ˜„์žฌ ์ž…๋ ฅ๋œ ๊ฐ’ ์ค‘ 3๋ฒˆ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋”ํ•˜๊ฒŒ ๋˜๋ฉด 2๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ ์ œ์™ธํ•œ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin

if __name__ == '__main__':
    n = int(input())
    nums = list(map(int, stdin.readline().split()))

    origin, skip = [0] * n, [0] * n
    origin[0] = skip[0] = nums[0]
    answer = nums[0]

    for i in range(1, n):
        origin[i] = max(origin[i - 1] + nums[i], nums[i])
        skip[i] = max(origin[i - 1], skip[i - 1] + nums[i])
        answer = max(answer, max(origin[i], skip[i]))

    print(answer)

 ์ฝ”๋“œ์—์„œ origin์€ ์ˆซ์ž๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์„ ๋•Œ ์—ฐ์†ํ•ฉ์„ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ํ•˜๊ณ , skip์€ ์ค‘๊ฐ„์— ํ•˜๋‚˜์˜ ์ˆซ์ž๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ ๋ฉ”์ด์ด์ œ์ด์…˜ํ•œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€