๊ธฐ๋ก๋ฐฉ

BOJ_2579 : ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๋ณธ๋ฌธ

CodingTest/Python

BOJ_2579 : ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ

Soom_1n 2022. 9. 2. 00:12

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

2579๋ฒˆ: ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ

๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๊ฒŒ์ž„์€ ๊ณ„๋‹จ ์•„๋ž˜ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ๊ณ„๋‹จ ๊ผญ๋Œ€๊ธฐ์— ์œ„์น˜ํ•œ ๋„์ฐฉ์ ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒŒ์ž„์ด๋‹ค. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ๊ณ„๋‹จ์—๋Š” ์ผ์ •ํ•œ ์ ์ˆ˜๊ฐ€ ์“ฐ์—ฌ ์žˆ๋Š”๋ฐ ๊ณ„๋‹จ์„ ๋ฐŸ์œผ๋ฉด ๊ทธ ๊ณ„๋‹จ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ 

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ๊ทœ์น™์— ๋”ฐ๋ผ ๊ณ„๋‹จ์„ ์˜ค๋ฅด๋ฉฐ ๊ฐ’์˜ ์ดํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ํ•œ๋‹ค.
    • ๊ทœ์น™1. ๊ณ„๋‹จ์€ 1์นธ ํ˜น์€ 2์นธ(1์นธ ์ ํ”„) ์”ฉ ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
    • ๊ทœ์น™2. ์—ฐ์†๋œ 3๊ฐœ์˜ ๊ณ„๋‹จ์„ ์—ฐ์†์œผ๋กœ ๋ฐŸ์„ ์ˆ˜ ์—†๋‹ค.
    • ๊ทœ์น™3. ๋งˆ์ง€๋ง‰ ๊ณ„๋‹จ์€ ๋ฐ˜๋“œ์‹œ ๋ฐŸ์•„์•ผ ํ•œ๋‹ค.
  • DP ๋ฌธ์ œ์ด๊ณ  ๋งˆ์ง€๋ง‰์€ ๊ผญ ๋ฐŸ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๊พธ๋กœ๊ฐ€๋Š” ์ ํ™”์‹์„ ๋งŒ๋“ค์–ด๋ณธ๋‹ค.
    • ๋งˆ์ง€๋ง‰ ๊ณ„๋‹จ์˜ ์ธ๋ฑ์Šค๊ฐ€ n์ด๋ฉด, ๋ฐŸ์„ ์ˆ˜ ์žˆ๋Š” ์ข…๋ฅ˜๋Š” 2๊ฐ€์ง€๋‹ค
      • 1) n๊ณผ n-1์„ ์—ฐ์†์œผ๋กœ ๋ฐŸ๋Š”๋‹ค = n-2๋ฅผ ๋ฐŸ์œผ๋ฉด์•ˆ๋œ๋‹ค = n-3์„ ๋ฐŸ๋Š”๋‹ค.
        • dp[n-3] + arr[n-1] + arr[n]
      • 2) n-1์„ ๋ฐŸ์ง€ ์•Š๋Š”๋‹ค.
        • dp[n-2] + arr[n]
      • ์ตœ๋Œ€๊ฐ’์„ ์ฐพ์•„์•ผ ํ•˜๋ฏ€๋กœ, ๋‘ ๋ฐฉ๋ฒ• ์ค‘ ํฐ ๊ฑธ ์„ ํƒํ•œ๋‹ค.
  • ์ธ๋ฑ์Šค 0, 1, 2์ผ๋•Œ ์ ํ™”์‹ 1๋ฒˆ์ด ์ ์šฉ์ด ์•ˆ๋˜๋ฏ€๋กœ 0, 1, 2๋Š” ๋”ฐ๋กœ ์ž…๋ ฅํ•œ๋‹ค.
    • 1) ์ธ๋ฑ์Šค 0 ์„ ํƒ ๋ฐฉ๋ฒ• 1๊ฐœ
    • 2) ์ธ๋ฑ์Šค 1 ์„ ํƒ ๋ฐฉ๋ฒ• 2๊ฐœ : max(arr[0] + arr[1], arr[1])
    • 3) ์ธ๋ฑ์Šค 2 ์„ ํƒ ๋ฐฉ๋ฒ• 2๊ฐœ : max (arr[0] + arr[2], arr[1] + arr[2])
  • n์ด 2์ดํ•˜์ผ๋•Œ๋„ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

n = int(input())

arr = []
dp = [0] * n

for _ in range(n):
    arr.append(int(input()))

dp[0] = arr[0]
if n == 1:
    print(sum(arr))
    exit(0)
dp[1] = max(arr[0]+arr[1], arr[1])
if n == 2:
    print(sum(arr))
    exit(0)
dp[2] = max(arr[0]+arr[2], arr[1]+arr[2])

for i in range(3, n):
    dp[i] = max(dp[i-2]+arr[i], dp[i-3]+arr[i-1]+arr[i])

print(dp[n-1])

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • arr : ๊ณ„๋‹จ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฆฌ์ŠคํŠธ
  • dp : ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฆฌ์ŠคํŠธ (์ธ๋ฑ์Šค๋งˆ๋‹ค ๋„์ฐฉ ์‹œ ์ตœ๋Œ€๊ฐ’)
  • n์ด 1, 2์ผ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • ์ธ๋ฑ์Šค 0, 1, 2๋Š” dp๋ฅผ ๋”ฐ๋กœ ๊ณ„์‚ฐ
  • ๊ทธ ์™ธ์—๋Š” ์ ํ˜ธ์‹๋Œ€๋กœ ๊ณ„์‚ฐ

๐Ÿ”ธ end ๐Ÿ”ธ

  • dp๋ฌธ์ œ์˜ ๊ฐˆํ”ผ๋ฅผ ๋ชป์žก๊ณ  ์ •๋‹ต์„ ๋ณด๊ฒŒ๋˜์—ˆ๋‹ค. ๋ณดํ†ต ์ ํ™”์‹์„ ์„ธ์šด๋‹ค๋Š” ๊ฑธ ๊ธฐ์–ตํ–ˆ์ง€๋งŒ ์ดํ•ดํ•˜๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค.
  • ํ˜ผ์ž ๊ทœ์น™์„ ์ƒ๊ฐํ• ๋•Œ๋„ n์˜ ํฌ๊ธฐ๋ฅผ ๋„ˆ๋ฌด ์ž‘๊ฒŒ ์žก์€๊ฒŒ ํ ์ด์—ˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ทœ์น™์„ ๊ฐ–๊ณ  ์ž˜ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.
  • dp๋ฌธ์ œ๋Š” ๋” ์—ฐ์Šตํ•ด๋ด์•ผ๊ฒ ๋‹ค.

728x90

'CodingTest > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_9461 : ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด  (0) 2022.09.03
BOJ_9095 : 1, 2, 3 ๋”ํ•˜๊ธฐ  (0) 2022.09.03
BOJ_9375 : ํŒจ์…˜์™• ์‹ ํ•ด๋นˆ  (0) 2022.09.01
BOJ_17219 : ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ  (0) 2022.08.30
BOJ_11399 : ATM  (0) 2022.08.30