๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์Šคํ„ฐ๋”” 7์ฃผ์ฐจ] ๋™์ ๊ณ„ํš๋ฒ• ์ •์ˆ˜์‚ผ๊ฐํ˜• Lv.3 - ํŒŒ์ด์ฌ(Python)

๐Ÿ“‘ ๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/43105

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30

programmers.co.kr

๋”๋ณด๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

์œ„์™€ ๊ฐ™์€ ์‚ผ๊ฐํ˜•์˜ ๊ผญ๋Œ€๊ธฐ์—์„œ ๋ฐ”๋‹ฅ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ๊ฒฝ๋กœ ์ค‘, ๊ฑฐ์ณ๊ฐ„ ์ˆซ์ž์˜ ํ•ฉ์ด ๊ฐ€์žฅ ํฐ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์นธ์œผ๋กœ ์ด๋™ํ•  ๋•Œ๋Š” ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ์นธ ์˜ค๋ฅธ์ชฝ ๋˜๋Š” ์™ผ์ชฝ์œผ๋กœ๋งŒ ์ด๋™ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 3์—์„œ๋Š” ๊ทธ ์•„๋ž˜์นธ์˜ 8 ๋˜๋Š” 1๋กœ๋งŒ ์ด๋™์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์‚ผ๊ฐํ˜•์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด triangle์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฑฐ์ณ๊ฐ„ ์ˆซ์ž์˜ ์ตœ๋Œ“๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ์‚ผ๊ฐํ˜•์˜ ๋†’์ด๋Š” 1 ์ด์ƒ 500 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์‚ผ๊ฐํ˜•์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์ˆซ์ž๋Š” 0 ์ด์ƒ 9,999 ์ดํ•˜์˜ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

triangle/ result

[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30

 

 

 

 

 

 

 

 

 

โœ’๏ธ ํ’€์ด

 ๋งจ ๊ผญ๋Œ€๊ธฐ๋ฅผ ๋ ˆ๋ฒจ 0์ด๋ผ ํ•œ๋‹ค๋ฉด, ๊ทธ ๋‹ค์Œ ์ค„์ธ ๋ ˆ๋ฒจ 1๋ถ€ํ„ฐ ๋ ˆ๋ฒจ ์•ˆ์˜ ์ˆซ์ž๋“ค์„ ๋ชจ๋‘ ์กฐํšŒํ•œ๋‹ค.

 

โ—ป๏ธ ์™ผ์ชฝ ์ƒ๋‹จ ์ˆซ์ž: ๋ ˆ๋ฒจ์€ ํ•œ ๋‹จ๊ณ„ ์ ๊ณ ,  ๋ ˆ๋ฒจ ์•ˆ์—์„œ ์œ„์น˜ ์ธ๋ฑ์Šค๋„ ์ง€๊ธˆ๋ณด๋‹ค ํ•˜๋‚˜ ์ ์€ ์ˆซ์ž.

โ—ป๏ธ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ์ˆซ์ž: ๋ ˆ๋ฒจ์€ ํ•œ ๋‹จ๊ณ„ ์ ๊ณ , ๋ ˆ๋ฒจ ์•ˆ์—์„œ ์œ„์น˜ ์ธ๋ฑ์Šค๋Š” ์ง€๊ธˆ๊ณผ ๊ฐ™์€ ์ˆซ์ž.

 

 ๋งค ์ˆซ์ž๋งˆ๋‹ค ์™ผ์ชฝ ์ƒ๋‹จ/ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์„ ํ™•์ธํ•˜๋ฉฐ ๋” ํฐ ์ชฝ์„ ๋”ํ•ด์ค€๋‹ค.

 ๋‹จ, ์ˆซ์ž ์œ„์น˜์— ๋”ฐ๋ผ์„œ ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์ผ€์ด์Šค๋ฅผ ๋‚˜๋ˆ ์ค€๋‹ค.

 

 

 

 

 

 

 

 

 

๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ: ํŒŒ์ด์ฌ(Python)

def solution(triangle):
    answer = 0
    for lv in range(1, len(triangle)):
        for n in range(len(triangle[lv])):
            if n==0:
                triangle[lv][n] += triangle[lv-1][n]
            elif lv == n:
                triangle[lv][n] += triangle[lv-1][n-1]
            else:
                triangle[lv][n] += max(triangle[lv-1][n-1], triangle[lv-1][n])
            answer = max(answer, triangle[lv][n])
    return answer

triangle = [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]]
print(solutin(triangle))

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ