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

The only one you can truly trust is yourself.

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

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

๐ŸŽฎinspirer9 2023. 2. 23. 00:52
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

์œ„์™€ ๊ฐ™์€ ์‚ผ๊ฐํ˜•์˜ ๊ผญ๋Œ€๊ธฐ์—์„œ ๋ฐ”๋‹ฅ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ๊ฒฝ๋กœ ์ค‘, ๊ฑฐ์ณ๊ฐ„ ์ˆซ์ž์˜ ํ•ฉ์ด ๊ฐ€์žฅ ํฐ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์นธ์œผ๋กœ ์ด๋™ํ•  ๋•Œ๋Š” ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ํ•œ ์นธ ์˜ค๋ฅธ์ชฝ ๋˜๋Š” ์™ผ์ชฝ์œผ๋กœ๋งŒ ์ด๋™ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 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

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

์—†์Œ.

ํ’€์ด

  • ์—ฐ์Šต๋™์ ๊ณ„ํš๋ฒ•(Dynamic Programming)์œผ๋กœ ํ’€๋ผ๋Š” ๋ฌธ์ œ.
  • ์ด๊ฑธ ๋งค๋ฒˆ ์‹คํŒจํ•ด์„œ ์ž‘์„ฑํ•˜๋‹ค ๋ง๊ณ  ์ž‘์„ฑํ•˜๋‹ค ๋ง๊ณ  ํ•˜๋‹ค๊ฐ€ ์˜ค๋Š˜ ๋‹ค์‹œ ํ’€์–ด๋ณด์ž๊ณ ! ํ•˜๋ฉด์„œ ํด๋ฆญ!
  • ๋ฌธ์ œ๋ฅผ ์ €๋ฒˆ์— ๋Œ€์ถฉ ์ฝ์—ˆ๋‹ค๊ฐ€ ์—‰ํ„ฐ๋ฆฌ์ฒ˜๋Ÿผ ์งœ๊ณ  ๊ณ„์† ์‹คํŒจํ•ด์„œ ์งœ์ฆ๋‚˜์„œ ๋ฎ์—ˆ๋˜ ํ”์ ์„ ๋ณด๋‹ˆ ใ…‹ใ…‹

  • ํ—ˆํ—ˆํ—ˆ... ์ด๊ฑฐ ๋ญ... ์™„์ „ ๋ฉ์ฒญ์ด๊ตฌ๋งŒ?
  • ๋‹ค์‹œ ํ‘ผ ์ฝ”๋“œ
def solution(triangle):
    answer = 0
    l = len(triangle)
    for i in range(1,l): #๋†’์ด
        for j in range(i+1): #ํญ
            #print(i,j,triangle[i][j])
            if j == 0:
                triangle[i][j] += triangle[i-1][0]
            elif j == i:
                triangle[i][j] += triangle[i-1][j-1]
            else:
                _a = triangle[i][j] + triangle[i-1][j]
                _b = triangle[i][j] + triangle[i-1][j-1]
                triangle[i][j] = max(_a, _b)
    return max(triangle[l-1])
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.3MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.05ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.09ms, 10.4MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.40ms, 10.1MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (2.67ms, 10.2MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.75ms, 10.2MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (1.48ms, 10.3MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.31ms, 10.3MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.3MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.36ms, 10.3MB)

ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (45.53ms, 14.2MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (35.99ms, 13.1MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (51.78ms, 14.7MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (45.78ms, 14.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (38.96ms, 13.9MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (52.67ms, 14.8MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (48.53ms, 14.5MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (40.50ms, 13.7MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (38.69ms, 14MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (45.04ms, 14.4MB)
  • ๋น„์Šทํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค.
    • ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ์—†์ด ๊น”๋”ํ•˜๋‹ค.
def solution(triangle):
    dp = []
    for t in range(1, len(triangle)):
        for i in range(t+1):
            if i == 0:
                triangle[t][0] += triangle[t-1][0]
            elif i == t:
                triangle[t][-1] += triangle[t-1][-1]
            else:
                triangle[t][i] += max(triangle[t-1][i-1], triangle[t-1][i])
    return max(triangle[-1])
    
์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.3MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.06ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.15ms, 10.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (1.09ms, 10.3MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.54ms, 10.1MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (1.34ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.48ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.01ms, 10.2MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.22ms, 10.2MB)

ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (37.36ms, 14.2MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (29.44ms, 13.1MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (42.58ms, 14.7MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (39.75ms, 14.2MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (31.95ms, 13.9MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (44.34ms, 14.7MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (40.10ms, 14.4MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (31.37ms, 13.7MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (35.69ms, 14MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (37.57ms, 14.4MB)
  • ๋žŒ๋‹ค ๋ณ€ํƒœ ใ…‹ใ…‹
solution = lambda t, l = []: max(l) if not t else solution(t[1:], [max(x,y)+z for x,y,z in zip([0]+l, l+[0], t[0])])

์ •ํ™•์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (0.01ms, 9.99MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.2MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (0.08ms, 10.2MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (0.21ms, 10MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (1.47ms, 10.4MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (0.47ms, 10.3MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (0.78ms, 10.2MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (0.35ms, 10.2MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (0.02ms, 10.1MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (0.13ms, 10.2MB)

ํšจ์œจ์„ฑ  ํ…Œ์ŠคํŠธ
ํ…Œ์ŠคํŠธ 1 ใ€‰	ํ†ต๊ณผ (24.82ms, 19.4MB)
ํ…Œ์ŠคํŠธ 2 ใ€‰	ํ†ต๊ณผ (19.44ms, 17.3MB)
ํ…Œ์ŠคํŠธ 3 ใ€‰	ํ†ต๊ณผ (28.41ms, 20.4MB)
ํ…Œ์ŠคํŠธ 4 ใ€‰	ํ†ต๊ณผ (25.08ms, 19.4MB)
ํ…Œ์ŠคํŠธ 5 ใ€‰	ํ†ต๊ณผ (23.09ms, 18.8MB)
ํ…Œ์ŠคํŠธ 6 ใ€‰	ํ†ต๊ณผ (29.03ms, 20.7MB)
ํ…Œ์ŠคํŠธ 7 ใ€‰	ํ†ต๊ณผ (26.60ms, 20MB)
ํ…Œ์ŠคํŠธ 8 ใ€‰	ํ†ต๊ณผ (20.50ms, 18.5MB)
ํ…Œ์ŠคํŠธ 9 ใ€‰	ํ†ต๊ณผ (21.19ms, 18.9MB)
ํ…Œ์ŠคํŠธ 10 ใ€‰	ํ†ต๊ณผ (27.57ms, 20.3MB)

๋ชป ํ’€๊ณ  ๋™๋™ ๊ฑฐ๋ฆฌ๋˜ ๋ฌธ์ œ๋“ค๋„ ์‹œ๊ฐ„์ด ์ง€๋‚˜, ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋‚ด๊ณต์ด ์Œ“์ด๋ฉด ์‰ฝ๊ฒŒ ํด๋ฆฌ์–ด๊ฐ€ ๋˜๋Š”๊ตฌ๋‚˜...

728x90
๋ฐ˜์‘ํ˜•