๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šคํ‹ฐ์ปค ๋ชจ์œผ๊ธฐ(2) (Summer/Winter Coding ~2018, DP, ์ ํ™”์‹, ์–ด๋ ค์›€)

๐ŸŽฎinspirer9 2023. 3. 2. 11:40
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

N๊ฐœ์˜ ์Šคํ‹ฐ์ปค๊ฐ€ ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ N = 8์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.


์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์Šคํ‹ฐ์ปค์—์„œ ๋ช‡ ์žฅ์˜ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์–ด๋‚ด์–ด ๋œฏ์–ด๋‚ธ ์Šคํ‹ฐ์ปค์— ์ ํžŒ ์ˆซ์ž์˜ ํ•ฉ์ด ์ตœ๋Œ€๊ฐ€ ๋˜๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹จ ์Šคํ‹ฐ์ปค ํ•œ ์žฅ์„ ๋œฏ์–ด๋‚ด๋ฉด ์–‘์ชฝ์œผ๋กœ ์ธ์ ‘ํ•ด์žˆ๋Š” ์Šคํ‹ฐ์ปค๋Š” ์ฐข์–ด์ ธ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ๊ทธ๋ฆผ์—์„œ 14๊ฐ€ ์ ํžŒ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์œผ๋ฉด ์ธ์ ‘ํ•ด์žˆ๋Š” 10, 6์ด ์ ํžŒ ์Šคํ‹ฐ์ปค๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์Šคํ‹ฐ์ปค์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์–ด๋‚ด์–ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž์˜ ํ•ฉ์˜ ์ตœ๋Œ“๊ฐ’์„ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์›ํ˜•์˜ ์Šคํ‹ฐ์ปค ๋ชจ์–‘์„ ์œ„ํ•ด ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • sticker๋Š” ์›ํ˜•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์Šคํ‹ฐ์ปค์˜ ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด๋กœ, ๊ธธ์ด(N)๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • sticker์˜ ๊ฐ ์›์†Œ๋Š” ์Šคํ‹ฐ์ปค์˜ ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž์ด๋ฉฐ, ๊ฐ ์นธ์— ์ ํžŒ ์ˆซ์ž๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์›ํ˜•์˜ ์Šคํ‹ฐ์ปค ๋ชจ์–‘์„ ์œ„ํ•ด sticker ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์™€ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋‹ค๊ณ  ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sticker answer
[14, 6, 5, 11, 3, 9, 2, 10] 36
[1, 3, 2, 5, 4] 8

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
6, 11, 9, 10์ด ์ ํžŒ ์Šคํ‹ฐ์ปค๋ฅผ ๋–ผ์–ด ๋ƒˆ์„ ๋•Œ 36์œผ๋กœ ์ตœ๋Œ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
3, 5๊ฐ€ ์ ํžŒ ์Šคํ‹ฐ์ปค๋ฅผ ๋–ผ์–ด ๋ƒˆ์„ ๋•Œ 8๋กœ ์ตœ๋Œ€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํ’€์ด

  • ์ˆ˜๋งŽ์€ ์‚ฝ์งˆ์ด ์žˆ์—ˆ์œผ๋‚˜ ์ •๋ฆฌํ•˜๋˜ ๊ฒƒ์ด ์‚ฌ๋ผ์กŒ๊ณ , ๋‹ค์‹œ ์ •๋ฆฌํ•จ
  • ์šฐ์„ 
    • sticker ๊ธธ์ด๊ฐ€ 3๋ณด๋‹ค ์ž‘์œผ๋ฉด 3๊ฐœ ์ค‘์— ํ•œ๊ฐœ๋ผ์„œ ๊ทธ๋ƒฅ max๋กœ ๋ฆฌํ„ดํ•˜๋ฉด ๋จ
    • OXX
    • XOX
    • XXO
  • ์ง์ˆ˜์ผ ๋•Œ๋Š”
    • ๋ฐฐ์—ด 2๊ฐœ ๋งŒ๋“ค์–ด์„œ ๋” ํฐ ์ชฝ์„ ๋ฆฌํ„ด
    • OXOXOXOX
    • XOXOXOXO
  • ํ™€์ˆ˜์ผ ๋•Œ๋Š”
    • ์ด๋•Œ ๋จธ๋ฆฌ๊ฐ€ ๋ฝ€๊ฐœ์ง€๋Š”๋ฐ, ์•„๋ž˜์ฒ˜๋Ÿผ ๋˜์–ด ์žˆ๋‹ค.
      • OXOXOXOXX
      • XOXOXOXOX
      • XXOXOXOXO
      • OXXOXOXOX
      • XOXXOXOXO
      • OXOXXOXOX
      • XOXOXXOXO
    • ๊ทผ๋ฐ ๋˜ ์ž˜ ๋ณด๋‹ˆ... XX๋งŒ ์˜ฎ๊ฒจ๋‹ค๋‹ˆ๋Š” ๊ฒƒ์ด์ž–์•„?
      • ๊ทธ๋Ÿผ ๊ทธ๊ฑธ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋ƒ... ใ…‹ใ…‹ใ…‹
      • ์˜ฎ๊ฒจ๋‹ค๋‹ ๋•Œ ํ™€์ง์ด ๋ฐ”๋€Œ๋Š”๋ฐ?
      • ์•ž๋ถ€๋ถ„์ด๋ž‘ ๋’ท๋ถ€๋ถ„๋„ ๋‹ค๋ฅด๋„ค...
    • ์–ด๋–ป๊ฒŒ ์•ˆ๋˜๋ƒ ใ…‹ใ…‹ใ…‹
      • X]OXOXOXO[X
      • [XX]OXOXOXO -> a
      • O[XX]OXOXOX       a๋ž‘ b๋ž‘ [XX] ๋นผ๊ณ  ๊ฐ™์ž–์•„?
      • XO[XX]OXOXO -> b
      • OXO[XX]OXOX      ๊ทธ๋Ÿผ [XX]๊ฐ€ ์ œ์ผ ์ž‘์€ ์• ๊ฐ€ ์ œ์ผ ํฐ ๊ฑฐ ์•„๋‹Œ๊ฐ€?
      • XOXO[XX]OXO      ์•„๋‹˜. ์•ž์ด๋ž‘ ๋’ค๊ฐ€ ํ‹€์–ด์ ธ์žˆ์–ด
      • OXOXO[XX]OX
      • XOXOXO[XX]O
      • OXOXOXO[XX]
      • X]OXOXOXO[X
    • ์–ด๋–ป๊ฒŒ ์•ˆ๋˜๋ƒ 2
      • X]OXOXOXO[X -> ์ด๊ฑด ๊ทธ๋ƒฅ ํ™€์ˆ˜๋ž‘ ๊ฐ™์Œ
      • [XX]OXOXOXO ์•ž : ํ™€์ˆ˜ + XX + ๋’ค : ์ง์ˆ˜
      • O[XX]OXOXOX ์•ž : ์ง์ˆ˜ + XX + ๋’ค : ํ™€์ˆ˜
      • XO[XX]OXOXO
      • OXO[XX]OXOX
  • ์•„....................... ์‚ฝ์งˆ์ด์—ˆ๋‹ค.
def solution(sticker):
    answer = 0
    n = len(sticker)
    
    if n <= 3:
        answer = max(sticker)
    elif n % 2 == 0:
        sum_even_sticker = sum([sticker[i] for i in range(0,n,2)])
        sum_odd_sticker =  sum([sticker[i] for i in range(1,n,2)])
        answer = max(sum_even_sticker, sum_odd_sticker)
    else:
        front = [0 for _ in range(n)]
        back = [0 for _ in range(n)]
        front[0] = sticker[0]
        front[1] = sticker[1]
        back[n-2] = sticker[n-2]
        back[n-1] = sticker[n-1]

        for i in range(2,n-1,1):
            front[i] = sticker[i] + front[i-2]
        for i in range(n-3,0,-1):
            back[i]  = sticker[i] + back[i+2]

        answer = max(front[n-3], back[1], back[2])
        for i in range(1, n-2, 1):
            if answer < front[i-1] + back[i+2]:
                answer = front[i-1] + back[i+2]
    
    return answer
  • ๊ณ„์† ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ๋œฏ๋Š” ๊ฑธ ์ƒ์ •ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€๋ ค๊ณ  ๋จธ๋ฆฌ๋„ ์•ˆ์“ฐ๊ณ ...
    • ๋ˆ„๊ฐ€ ์ข€ ๋•Œ๋ ค์ค˜... ใ… .ใ… ;

  • ๋ฌด์กฐ๊ฑด ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋œฏ์–ด๋‚ด๋Š”๊ฒŒ ์•„๋‹Œ๋ฐ... ใ…ก.ใ…ก;
    • OXO์™€ OXXO์˜ ์กฐํ•ฉ์œผ๋กœ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
    • ๊ตฌ๊ฐ„ ํ•ฉ์ด ์ œ์ผ ํฐ๊ฑธ ํ•ฉ์ณ์•ผ ํ•˜๋‚˜?
    • ์ฒซ๋ฒˆ์งธ ์ˆซ์ž -> ๋‹ค์Œ์ˆซ์ž๋Š”X -> ๊ทธ๋‹ค์Œ๊ณผ ๊ทธ ๋‹ค์Œ๋‹ค์Œ ์ค‘์— ํฐ ์ˆซ์ž
      • 1 -> 8 -> 100 = 109
    • ๋‘๋ฒˆ์จฐ ์ˆซ์ž -> ๋‹ค์Œ์ˆซ์ž๋Š”X -> ๊ทธ๋‹ค์Œ๊ณผ ๊ทธ ๋‹ค์Œ๋‹ค์Œ ์ค‘์— ํฐ ์ˆซ์ž
      • 100 -> 100 = 200
  • DP๋กœ ์‚ฝ์งˆํ•˜๋‹ค ๊ฒจ์šฐ ํ’€์—ˆ๋‹ค.
    • ์ฒ˜์Œ ์‹œ๋„ํ–ˆ๋˜ ๊ฑด
    • dp[i] = sticker[i] + max(dp[i-2], dp[i-3])
      • ๋ญ”๊ฐ€ ์ž˜ ์•ˆ๋˜๊ณ  print()๋ฅผ ํ•ด๋ณด๋ฉด, ๋งจ ์•ž์ˆซ์ž๋ฅผ ๊ฒŸํ•˜๊ณ  ๋งจ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋„ ๊ฒŸํ•ด์„œ ์ดˆ๊ณผ
  • ๋‘๋ฒˆ์งธ๋กœ ์‹œ๋„ํ–ˆ๋˜ ๊ฑด, ๋„ˆ๋ฌด ๋งŽ์ด ๊ณ ์ณ์„œ ๊ธฐ์–ต์— ์—†๋‹ค.
    • ๋Œ€์ถฉ OXXO๋ž‘ OXO์ค‘์— ๊ณจ๋ผ์•ผ ๋˜๋Š”๊ฑฐ,
    • ๋งจ ์•ž์— ์ˆซ์ž๋ž‘ ๋งจ ๋’ค์— ์ˆซ์ž๋ž‘ ํ•จ๊ป˜ ๊ณ ๋ฅด์ง€ ์•Š๋„๋ก ํ•˜๋Š”๊ฑฐ
    • ๊ทธ๋ž˜์„œ for๋ฌธ ๋‘๋ฒˆ ๋Œ๋ฆฌ๋Š” ๊ฑธ๋กœ ํ•ด๊ฒฐํ•จ.
def solution(sticker):
    answer = 0
    n = len(sticker)
    
    if n <= 3:
        answer = max(sticker)
    else:
        dp = [0] * n
        for i in range(1,n):
            dp[i] = max(sticker[i] + dp[i-2], dp[i-1])
        answer = dp[-1]
        
        dp[0] = sticker[0]
        dp[1] = sticker[0]
        for i in range(2,n-1):
            dp[i] = max(sticker[i] + dp[i-2], dp[i-1])
        answer = max(answer, dp[-2])
        
    return answer
  • ์ ์  ์–ด์ฉŒ๋‹ค ๋ณด๋‹ˆ ํ’€๋ฆฌ๋Š” ์ผ€์ด์Šค๊ฐ€ ๋งŽ์•„์ง„๋‹ค.ใ…‹ใ…‹ใ…‹
  • ๋ฌด์ง€์„ฑ ์ฝ”๋”ฉ ํ•˜์ง€๋ง๊ณ  ์ด์   ์„ค๊ณ„๋ฅผ ํ•˜์ž๊ตฌ... ใ… .ใ… 
  • ํ•˜์ง€๋งŒ ๋ฌด์ง€์„ฑ ์ฝ”๋”ฉ์ด ์žฌ๋ฐŒ์–ด
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.4MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.51ms, 10.4MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.82ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (1.03ms, 10.3MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.1MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.3MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.3MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.3MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.1MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.3MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.3MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (0.51ms, 10.2MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.91ms, 10.1MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.3MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.2MB)
ํ…Œ์ŠคํŠธ 21 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.2MB)
ํ…Œ์ŠคํŠธ 22 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.2MB)
ํ…Œ์ŠคํŠธ 23 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.1MB)
ํ…Œ์ŠคํŠธ 24 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.3MB)
ํ…Œ์ŠคํŠธ 25 ใ€‰	ํ†ต๊ณผ (0.51ms, 10.1MB)
ํ…Œ์ŠคํŠธ 26 ใ€‰	ํ†ต๊ณผ (0.51ms, 10.2MB)
ํ…Œ์ŠคํŠธ 27 ใ€‰	ํ†ต๊ณผ (0.74ms, 10.1MB)
ํ…Œ์ŠคํŠธ 28 ใ€‰	ํ†ต๊ณผ (0.50ms, 10.2MB)
ํ…Œ์ŠคํŠธ 29 ใ€‰	ํ†ต๊ณผ (1.04ms, 10.1MB)
ํ…Œ์ŠคํŠธ 30 ใ€‰	ํ†ต๊ณผ (0.55ms, 10.3MB)
ํ…Œ์ŠคํŠธ 31 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.1MB)
ํ…Œ์ŠคํŠธ 32 ใ€‰	ํ†ต๊ณผ (1.06ms, 10.2MB)
ํ…Œ์ŠคํŠธ 33 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.2MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (56.92ms, 13.7MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (56.68ms, 13.8MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (57.94ms, 13.8MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (56.33ms, 14.3MB)
  • ๊ณ ์ˆ˜์˜ ํ’€์ด
    • for๋ฌธ ํ•œ๋ฒˆ์œผ๋กœ ์•ˆ๋˜๋‚˜ ์‹ถ์—ˆ๋Š”๋ฐ... ์—ญ์‹œ ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
def solution(stickers):
    if len(stickers) < 4:
        return max(stickers)
    n = len(stickers)
    dp = [[0] * n for _ in range(2)]
    dp[0][0] = stickers[0]  # 0 ๋ฒˆ์งธ row๋Š” ์ฒซ ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์Œ
    dp[0][1] = dp[0][0]
    dp[0][2] = dp[0][0]
    dp[1][0] = 0  # 1 ๋ฒˆ์งธ row๋Š” ์ฒซ ๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋ฅผ ๋œฏ์ง€ ์•Š์Œ
    dp[1][1] = stickers[1]
    dp[1][2] = max(stickers[2] + dp[1][0], dp[1][1])

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

    return max(dp[0][n - 2], dp[0][n - 1], dp[1][n - 1])
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.3MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.3MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (1.14ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.3MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.3MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.68ms, 10.1MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.63ms, 10.2MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.3MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.83ms, 10.2MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.65ms, 10.3MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.1MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (0.60ms, 10.3MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.3MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.3MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.2MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.66ms, 10.3MB)
ํ…Œ์ŠคํŠธ 21 ใ€‰	ํ†ต๊ณผ (1.07ms, 10.2MB)
ํ…Œ์ŠคํŠธ 22 ใ€‰	ํ†ต๊ณผ (0.82ms, 10.2MB)
ํ…Œ์ŠคํŠธ 23 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.2MB)
ํ…Œ์ŠคํŠธ 24 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.2MB)
ํ…Œ์ŠคํŠธ 25 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.2MB)
ํ…Œ์ŠคํŠธ 26 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.1MB)
ํ…Œ์ŠคํŠธ 27 ใ€‰	ํ†ต๊ณผ (0.64ms, 10.3MB)
ํ…Œ์ŠคํŠธ 28 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.4MB)
ํ…Œ์ŠคํŠธ 29 ใ€‰	ํ†ต๊ณผ (0.74ms, 10.3MB)
ํ…Œ์ŠคํŠธ 30 ใ€‰	ํ†ต๊ณผ (0.61ms, 10.4MB)
ํ…Œ์ŠคํŠธ 31 ใ€‰	ํ†ต๊ณผ (1.20ms, 10.1MB)
ํ…Œ์ŠคํŠธ 32 ใ€‰	ํ†ต๊ณผ (0.63ms, 10.1MB)
ํ…Œ์ŠคํŠธ 33 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.3MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (68.22ms, 16.7MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (69.11ms, 16.7MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (68.94ms, 16.7MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (63.09ms, 17.5MB)
  • ๋Œ€๋ถ€๋ถ„ ๋น„์Šทํ•˜๋‹ค.
    • ์ด์ชฝ์ด ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹๋‹ค.
def solution(sticker):

    n = len(sticker)

    if n <= 3:
        return max(sticker)

    dp1 = [0] * n
    dp2 = [0] * n

    dp1[0] = sticker[0]; dp1[1] = dp1[0]
    dp2[1] = sticker[1]; dp2[0] = 0

    # case 1 -> pick 0
    for i in range(2, n-1):
        dp1[i] = max(dp1[i - 2] + sticker[i], dp1[i - 1])

    for i in range(2, n):
        dp2[i] = max(dp2[i - 2] + sticker[i], dp2[i - 1])


    return max(dp1[-2], dp2[-1])
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.70ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (1.10ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.1MB)
ํ…Œ์ŠคํŠธ 11 ใ€‰	ํ†ต๊ณผ (0.53ms, 10.3MB)
ํ…Œ์ŠคํŠธ 12 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.1MB)
ํ…Œ์ŠคํŠธ 13 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.1MB)
ํ…Œ์ŠคํŠธ 14 ใ€‰	ํ†ต๊ณผ (0.54ms, 10.2MB)
ํ…Œ์ŠคํŠธ 15 ใ€‰	ํ†ต๊ณผ (0.55ms, 10.3MB)
ํ…Œ์ŠคํŠธ 16 ใ€‰	ํ†ต๊ณผ (0.54ms, 10.4MB)
ํ…Œ์ŠคํŠธ 17 ใ€‰	ํ†ต๊ณผ (0.51ms, 10.1MB)
ํ…Œ์ŠคํŠธ 18 ใ€‰	ํ†ต๊ณผ (0.59ms, 10.2MB)
ํ…Œ์ŠคํŠธ 19 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.2MB)
ํ…Œ์ŠคํŠธ 20 ใ€‰	ํ†ต๊ณผ (0.56ms, 10.4MB)
ํ…Œ์ŠคํŠธ 21 ใ€‰	ํ†ต๊ณผ (0.56ms, 10.2MB)
ํ…Œ์ŠคํŠธ 22 ใ€‰	ํ†ต๊ณผ (0.55ms, 10MB)
ํ…Œ์ŠคํŠธ 23 ใ€‰	ํ†ต๊ณผ (0.54ms, 10.2MB)
ํ…Œ์ŠคํŠธ 24 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.1MB)
ํ…Œ์ŠคํŠธ 25 ใ€‰	ํ†ต๊ณผ (0.65ms, 10.2MB)
ํ…Œ์ŠคํŠธ 26 ใ€‰	ํ†ต๊ณผ (0.63ms, 10.3MB)
ํ…Œ์ŠคํŠธ 27 ใ€‰	ํ†ต๊ณผ (1.05ms, 10.3MB)
ํ…Œ์ŠคํŠธ 28 ใ€‰	ํ†ต๊ณผ (1.01ms, 10.4MB)
ํ…Œ์ŠคํŠธ 29 ใ€‰	ํ†ต๊ณผ (0.54ms, 10.2MB)
ํ…Œ์ŠคํŠธ 30 ใ€‰	ํ†ต๊ณผ (0.54ms, 10.1MB)
ํ…Œ์ŠคํŠธ 31 ใ€‰	ํ†ต๊ณผ (0.52ms, 10.2MB)
ํ…Œ์ŠคํŠธ 32 ใ€‰	ํ†ต๊ณผ (0.55ms, 10.1MB)
ํ…Œ์ŠคํŠธ 33 ใ€‰	ํ†ต๊ณผ (0.00ms, 10.2MB)
ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (58.76ms, 16.7MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (58.67ms, 16.7MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (59.07ms, 16.7MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (58.46ms, 17.6MB)
  • DP๋ฅผ ์ข€ ๋” ๊ณต๋ถ€ํ•ด์•ผํ•  ๋“ฏ.
    • ๊ทผ๋ฐ DP๊ฐ€ ๊ฒฐ๊ตญ์€ ์ ํ™”์‹์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฑฐ๋ผ์„œ
    • ๊ทธ๊ฒŒ ์ƒ๊ฐ์ฒ˜๋Ÿผ ์ž˜ ๋˜์งˆ ์•Š๋Š”๋‹ค.
728x90
๋ฐ˜์‘ํ˜•