๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

๋ฟŒ์•ผ._. 2021. 8. 23. 23:58

<์ •์ˆ˜ ์‚ผ๊ฐํ˜•>

๋ฌธ์ œ(์ถœ์ฒ˜: https://school.programmers.co.kr/learn/courses/30/lessons/43105)

 

 

 

๋ฌธ์ œ ํ’€์ด

  - my solution

def solution(triangle):

    dp=[triangle[0]] #์ฒซ๋ฒˆ์งธ ์ค„ ๊ทธ๋Œ€๋กœ
    for i in range(len(triangle)-1):
        temp=[]
        for j in range(i+1):
            if j>0: #์™ผ์ชฝ ๋Œ€๊ฐ์„ 
                if temp[-1]<dp[i][j]+triangle[i+1][j]: #์•ž์—์„œ ๋”ํ•œ ๊ฐ’ ๋ณด๋‹ค ๋” ํฌ๋ฉด
                    temp[-1]=dp[i][j]+triangle[i+1][j] #์—…๋ฐ์ดํŠธ
            else: # ์™ผ์ชฝ ๋Œ€๊ฐ์„ 
                temp.append(dp[i][j] + triangle[i + 1][j])
            temp.append(dp[i][j]+triangle[i+1][j+1]) #์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„ 
        dp.append(temp) 

    return max(dp[-1]) #๋งˆ์ง€๋ง‰ ์ค„์—์„œ ์ตœ๋Œ“๊ฐ’ ์ถœ๋ ฅ

 

์˜ˆ์ „์— ์ด์™€ ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณธ ์ ์ด ์žˆ์–ด ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

dp๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค! ๋ฌผ๋ก  ๋ฌธ์ œ ์ œ๋ชฉ์—์„œ '๋™์  ๊ณ„ํš๋ฒ•'์ด๋ผ ๋‚˜์™€์žˆ์–ด ๋‹น์—ฐํ•˜๋‹ค ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ

๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  '์•„ dp๋ฅผ ํ™œ์šฉํ•ด์•ผ๊ฒ ๋‹ค'๋ผ๊ณ  ๋– ์˜ฌ๋ž๋‹จ ๋ง์ด๋‹ค!

 

  • ์ฒซ ๋ฒˆ์งธ ์ค„์€ ๋ฐฐ์—ด์— ๊ทธ๋Œ€๋กœ ๋„ฃ์–ด์ค€๋‹ค.
  • ์™ผ์ชฝ ๋Œ€๊ฐ์„ , ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„  ๋‘˜ ์ค‘ ํ•˜๋‚˜๋กœ๋งŒ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ ์ค€๋‹ค
  • ๋งจ ์™ผ์ชฝ ๋Œ€๊ฐ์„ ์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฐฐ์—ด์— ๋„ฃ์–ด์ค€๋‹ค.
  • ์˜ค๋ฅธ์ชฝ ๋Œ€๊ฐ์„ ๊ณผ ์™ผ์ชฝ ๋Œ€๊ฐ์„  ์ค‘ ํฐ ๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์„ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์ค„์—์„œ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅ

 

๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด ๋ง๋ณด๋‹ค ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋‚˜์ค‘์˜ ๋‚ด๊ฐ€ ๊ธ€๋งŒ ๋ด๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•œ๋‹ค๐Ÿ˜


์ƒ๊ฐ๐Ÿค”

 

์ด ๋ฌธ์ œ๋Š” ๋ฐฑ์ค€๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์— ๋‘˜ ๋‹ค ์ถœ์ œ๋˜์–ด์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ๋Š” Level 3, ๋ฐฑ์ค€์—์„œ๋Š” ์‹ค๋ฒ„ 1

 

๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์–ป์€ ๊ฒƒ 

1.  dp ํ™œ์šฉ


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges