[Baekjoon/๐ŸฅˆSilverโ…ข] 2579: ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ

1 ๋ถ„ ์†Œ์š”

Intro

๋ฌธ์ œ์‚ฌ์ง„

  • ๋ฌธ์ œ๋ฅผ ์š”์•ฝํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    • n๊ฐœ์˜ ๊ณ„๋‹จ์ด ์žˆ์œผ๋ฉฐ, ๊ฐ ๊ณ„๋‹จ๋งˆ๋‹ค ์ ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.
    • ๊ณ„๋‹จ์„ ์˜ฌ๋ผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์ž!

      ๐Ÿ™„ ๋‹จ, ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

      • ๊ณ„๋‹จ์€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜, ํ˜น์€ ๋‘ ๊ฐœ์”ฉ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
      • ์—ฐ์†ํ•ด์„œ ์„ธ ๊ณ„๋‹จ์„ ๋ฐŸ์„ ์ˆ˜ ์—†์œผ๋ฉฐ, ์‹œ์ž‘์ ์€ ์ œ์™ธํ•œ๋‹ค.
      • ๋งˆ์ง€๋ง‰ ๋„์ฐฉ ๊ณ„๋‹จ์€ ๋ฐ˜๋“œ์‹œ ๋ฐŸ๋Š”๋‹ค.

์ ‘๊ทผ ๋ฐฉ๋ฒ•๐Ÿ™‹โ€โ™€๏ธ

  • ์—ฐ์† ์„ธ ๊ณ„๋‹จ์„ ๋ฐŸ์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

    • i-2๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์ง€ ์•Š๊ณ , i-1๊ณผ i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ๋Š” ๊ฒฝ์šฐ

      • i-1๊ณผ i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ๊ธฐ ์œ„ํ•ด์„œ๋Š” i-3๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์•„์•ผ ํ•œ๋‹ค.
      • i-3 ์ด์ „ ๊ณ„๋‹จ์„ ๋ฐŸ์•˜๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค.
    • i-1๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์ง€ ์•Š๊ณ , i-2์™€ i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ๋Š” ๊ฒฝ์šฐ

      • i-2๊ฐ€ ์ด์ „ ๊ณ„๋‹จ์„ ๋ฐŸ์•˜๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.


์ด๋ฅผ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘ฉ i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์•„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ์ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ๋‘ ๊ฐ’์ด ํ•„์š”ํ•˜๋‹ค.

  • i-2๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ ์ˆ˜

  • i-3๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ ์ˆ˜

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๋™์ ๊ณ„ํš๋ฒ•์„ ์ ์šฉํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.


Algoritm๐Ÿ‘ฉโ€๐Ÿ’ป

์œ„ ๋ฐฉ์‹์„ ์ ์šฉํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž‘์„ฑํ•ด๋ณด์ž!

#21.10.12
import sys
N = int(input())

# ๋‘ ๋ฒˆ์งธ ๊ณ„๋‹จ๋ถ€ํ„ฐ ๊ธฐ๋ณธ์—ฐ์‚ฐ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก 2๊ฐœ์˜ 0์„ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด๋‘”๋‹ค.
score = [0, 0]
dp = [0, 0]

for i in range(N):
  score.append(int(sys.stdin.readline().rstrip()))
dp.append(score[2])

# ์ฒซ ๋ฒˆ์งธ ๊ณ„๋‹จ์€ for๋ฌธ์ด ์‹œํ–‰๋˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ๊ณ„๋‹จ์˜ ์ ์ˆ˜๊ฐ€ ๋ฐ”๋กœ ์ถœ๋ ฅ๋˜๊ฒŒ ๋œ๋‹ค.
# ๊ทธ ์ดํ›„ ๊ณ„๋‹จ๋ถ€ํ„ฐ๋Š” ๋‹ค์Œ์˜ ๋‘ ๊ฐ’์„ ๋น„๊ตํ•ด ์ตœ๋Œ€ ๊ฐ’์„ ๋„ฃ๊ฒŒ ๋œ๋‹ค.
  # i-2์™€ i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์„ ๊ฒฝ์šฐ
  # i-3๊ณผ i-1, i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์„ ๊ฒฝ์šฐ
for i in range(3, N+2):
  temp1 = score[i] + dp[i-2]
  temp2 = score[i] + score[i-1] + dp[i-3]
  dp.append(max(temp1, temp2))

print(dp[-1])

์ œ์ถœ๊ฒฐ๊ณผ

  • ๐Ÿ™‹โ€โ™€๏ธ ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ !!

    • i-3๊ณผ i-1, i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์„ ๊ฒฝ์šฐ
      • i-1๋ฅผ ๋ฐŸ๊ณ  ์ด์ „ ๊ณ„๋‹จ์ธ i-2๋ฅผ ๋ฐŸ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

        = dp[i-3] + score[i-1] + score[i]

        • i-3 ์ด์ „ ๊ณ„๋‹จ์˜ ๊ฒฝ์šฐ, ๋ฐŸ์•˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ์ƒ๊ด€์—†์œผ๋ฏ€๋กœ dp[i-3]์„ ํ†ตํ•ด i-3 ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
        • ์ถ”๊ฐ€๋กœ score[i-1], score[i] ๊ฐ’์„ ๋”ํ•ด i-3์„ ๋ฐŸ์•˜์„ ๋•Œ์˜ ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์—์„œ i-1๊ณผ i๋ฅผ ๋ฐŸ๋Š” ๊ฒฝ์šฐ์˜ ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.


๐Ÿ‘ฉ ๊ทธ๋Ÿผ ์ด๋งŒ ๋งˆ๋ฌด๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค!!

์ด๋งŒ!

๋! ~(ห˜โ–พห˜~)

๐Ÿ“ƒ์ฐธ๊ณ 

  • https://sungmin-joo.tistory.com/18
  • https://pacific-ocean.tistory.com/149

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ