๐Ÿ“Œ ํŒŒ์ด์ฌ์œผ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

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

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

 

 

๐Ÿ“Œ ์ œํ•œ ์‚ฌํ•ญ

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

 

๐Ÿ“Œ ์ž…์ถœ๋ ฅ ์˜ˆ


์ถ”์ธก) 

DP ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•œ ์˜์ƒ์„ ๋ณด๋ฉด์„œ ์ด๋ฏธ ํžŒํŠธ๋ฅผ ๋ด๋ฒ„๋ฆผ ใ… 

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

๊ฒน์น˜๋Š” ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ๋” ํฐ ์ˆซ์ž๊ฐ€ ๋‚จ๊ฒŒ ํ•ด์„œ ๋”ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ตœ๋Œ€๊ฐ’๋“ค๋งŒ ์ €์žฅ๋˜๊ฒŒ ํ•˜์—ฌ, ์ด์ „ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ค‘ ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ๊ฒƒ์€ ๋จผ์ € ๋ฐฐ์ œํ•˜๊ณ  ๊ฐ€์žฅ ๋†’์€ ์ˆซ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋งŒ์„ ๊ฐ€์ง€๊ณ  ํŒจํ„ด์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ฐ˜๋ณต๋˜๋Š” ์‹์„ ์ค„์ด๊ณ , ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜๋ฉด ๋ ๊ฑฐ ๊ฐ™๋‹ค. 

 

 

์†Œ์Šค์ฝ”๋“œ) 

* 1์ฐจ) ์‹คํŒจ : ์žฅ๋ ฌํ•œ ์˜ฌ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ

def solution(triangle):
    
    new_Triangle = [[0], [0, 0], [0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0]]

    for idx in range(0, len(triangle)-1) :
        if idx == 0 :
            # ์‹œ์ž‘๊ฐ’์€ ๋ฐ”๋กœ ๋„ฃ์–ด์ฃผ๊ธฐ
            new_Triangle[0] = triangle[0]

        for idx2, value2 in enumerate(triangle[idx]):
            #์ค‘๊ฐ„์ˆซ์ž
            first_Int = new_Triangle[idx][idx2]

            #์™ผ์ชฝ
            plus_Int1 = triangle[idx+1][idx2]
            sum1 = first_Int + plus_Int1
            if new_Triangle[idx+1][idx2] < sum1 :
                new_Triangle[idx+1][idx2] = sum1

            #์˜ค๋ฅธ์ชฝ
            plus_Int2 = triangle[idx+1][idx2+1]
            sum2 = first_Int + plus_Int2
            if new_Triangle[idx+1][idx2+1] < sum2 :
                new_Triangle[idx + 1][idx2 + 1] = sum2
                
    # ๋งˆ์ง€๋ง‰ ๊ฒฐ๊ณผ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋ฆฌํ„ด
    return max(new_Triangle[len(new_Triangle)-1])

* 2์ฐจ) ๋ฐ”๋ณด๋‹ค. ๋‹ค์–‘ํ•œ ๋†’์ด์˜ ๋ฐฐ์—ด์ด ๋“ค์–ด์˜ฌ๊ฑด๋ฐ ์˜ˆ์‹œ๋งŒ ์ƒ๊ฐํ•˜๊ณ  ๋ฐฐ์—ด์„ ํ•˜๋“œ์ฝ”๋”ฉ

def solution(triangle):
    
    # ๋”ํ•ด์ค€ ๊ฐ’ ๋„ฃ์–ด์ค„ ๋‹ค์ฐจ์› ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ
    new_Triangle = []
    for idx in range(0, len(triangle)) :
        list = []
        for idx2 in range(0, len(triangle[idx])) :
            list.append(0)
        new_Triangle.append(list)
        
    # ์‚ผ๊ฐ์—์„œ ์™ผ์ชฝ๊ฐ’ ์˜ค๋ฅธ์ชฝ ๊ฐ’ ๋”ํ•ด์„œ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๊ธฐ    
    for idx in range(0, len(triangle)-1) :
        if idx == 0 :
            # ์‹œ์ž‘๊ฐ’์€ ๋ฐ”๋กœ ๋„ฃ์–ด์ฃผ๊ธฐ
            new_Triangle[0] = triangle[0]

        for idx2, value2 in enumerate(triangle[idx]):
            #์ค‘๊ฐ„์ˆซ์ž
            first_Int = new_Triangle[idx][idx2]

            #์™ผ์ชฝ
            plus_Int1 = triangle[idx+1][idx2]
            sum1 = first_Int + plus_Int1
            if new_Triangle[idx+1][idx2] < sum1 :
                new_Triangle[idx+1][idx2] = sum1

            #์˜ค๋ฅธ์ชฝ
            plus_Int2 = triangle[idx+1][idx2+1]
            sum2 = first_Int + plus_Int2
            if new_Triangle[idx+1][idx2+1] < sum2 :
                new_Triangle[idx + 1][idx2 + 1] = sum2
                
    # ๋งˆ์ง€๋ง‰ ๊ฒฐ๊ณผ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋ฆฌํ„ด
    return max(new_Triangle[len(new_Triangle)-1])

 

 

๋ฆฌ๋ทฐ) 

๋จผ์ € ํžŒํŠธ๋ฅผ ๋ด๋ฒ„๋ ธ์ง€๋งŒ ์—ญ์‹œ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋˜ ๋‹ค๋ฅธ ์ด์•ผ๊ธฐ์ธ ๋“ฏ ํ•˜๋‹ค. ๋ญ”๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ  ๋ณด๋‹ˆ๊นŒ ์ด๊ฒŒ ์ตœ์„ ์ด ์•„๋‹Œ๊ฑฐ ๊ฐ™๊ธฐ๋„ ใ…Žใ…Žใ…Ž DP์— ๊ด€๋ จํ•ด์„œ๋Š” ์ •๋ง ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ฉด์„œ ์‚ฌ๊ณ ๋ฅผ ๋งž์ถฐ๋‚˜๊ฐ€๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ •๋ง ๋‹ค์–‘ํ•˜๊ฒŒ ํ’€์–ด๋ด์•ผํ•  ๋“ฏ ํ•˜๋‹ค.

 

 

 


์ฐธ๊ณ  ์˜์ƒ: 

 

+ Recent posts