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

๐Ÿบ ๋งค์ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

๋ฌธ์ œ

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

 

์ œํ•œ์‚ฌํ•ญ

  • 1 <= ์‚ผ๊ฐํ˜•์˜ ๋†’์ด <= 500
  • 0 <= ์‚ผ๊ฐํ˜•์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์ˆซ์ž <= 9999

 

๋ฌธ์ œํ’€์ด

  1. ์ด ๋ฌธ์ œ์˜ ๊ฐ€์žฅ ์ž‘์€ ํ•˜์œ„ ๋ฌธ์ œ๋Š” ๋‹ค์Œ ์นธ์˜ ๋‘ ์ˆ˜ ์ค‘ ๋” ํฐ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๋‹ค.
  2. ๋งจ ์•„๋ž˜ ์นธ๋ถ€ํ„ฐ ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ์ค‘ ํฐ ์ˆ˜๋ฅผ ์œ—์นธ์˜ ์ˆซ์ž์— ๋”ํ•ด์ค€๋‹ค. ์ฐจ๋ก€์ฐจ๋ก€ ๋”ํ•ด์ฃผ๋ฉฐ ๋งจ ์œ—์ชฝ์— ์žˆ๋Š” ํ•˜์œ„ ๋ฌธ์ œ๊นŒ์ง€ ํ•ด๊ฒฐํ•œ๋‹ค.
  3. ์ฒซ๋ฒˆ์งธ ์นธ์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์œ—์นธ์˜ ์ˆซ์ž ์ค‘ ํฐ ์ˆ˜๋ฅผ ์•„๋žซ์นธ์˜ ์ˆซ์ž์— ๊ฐ€์‚ฐํ•ด ์ฃผ๋Š” ํƒ‘ ๋‹ค์šด์œผ๋กœ๋„ ํ’€ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์œ—์นธ์˜ ์ˆซ์ž๋Š” ์•„๋ž˜์นธ๋ณด๋‹ค ํ•ญ์ƒ 1๊ฐœ ์ ๊ธฐ ๋•Œ๋ฌธ์— ๋งจ ๋์— ์žˆ๋Š” ์ˆซ์ž์— ๋Œ€ํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์šดํƒ‘์œผ๋กœ ํ’€์–ด๊ฐ€๋Š” ๊ฒƒ์ด ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ฝ”๋“œ๋„ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์งค ์ˆ˜ ์žˆ๋‹ค.

 

function solution(triangle) {
    for (let i = triangle.length - 2; 0 <= i; i--) {
        for (let j = 0; j < triangle[i].length; j++) {
            triangle[i][j] += Math.max(triangle[i+1][j], triangle[i+1][j+1])
        }
    }
    return triangle[0][0]
}

 

์‹œ๊ฐ„๋ณต์žก๋„: O(N^2), N์ด 500 ์ดํ•˜๋กœ ์ œํ•œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ O(1)

๊ณต๊ฐ„๋ณต์žก๋„: O(1)