[LeetCode] 241. Different Ways to Add Parentheses

yunanยท2021๋…„ 2์›” 21์ผ
0
post-thumbnail

๐Ÿ”ฆ ๋ฌธ์ œ ๋งํฌ

๐Ÿ”Š ํŒŒ์ด์ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ ์ฑ…์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ

์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž์˜ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๋ฉด ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์—ฐ์‚ฐ์ž๋Š” +,-,*์ž…๋‹ˆ๋‹ค.

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


๋ถ„ํ•  ์ •๋ณต์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•œ๋‹ค.

๋ถ„ํ• ์˜ ๊ธฐ์ค€์€ ์œ ํšจํ•œ ์—ฐ์‚ฐ์ž๊ฐ€ ๋œ๋‹ค.
๋ถ„ํ• ์€ ๋ชจ๋“  ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ ์ˆ˜ํ–‰๋˜๋Š” ์ˆœ์„œ๋˜ํ•œ ์ค‘์š”ํ•˜๋‹ค.
๋”ฐ๋ผ์„œ, ๋ชจ๋“  ์ˆœ์„œ์— ๋Œ€ํ•ด ๋ถ„ํ• ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ ์žฌ๊ท€๋งˆ๋‹ค ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊ฒฐ๊ณผ๋Š” ํ˜„ ๋‹จ๊ณ„์—์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ˆœ์„œ์— ๋Œ€ํ•ด ๊ณ„์‚ฐํ•œ ๊ฐ’์ด๋‹ค.
์ด๊ฒƒ์„ ์ฒซ๋ฒˆ์งธ ์žฌ๊ท€๊ฐ€ ๋๋‚  ๋•Œ ๊นŒ์ง€ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ชจ๋“  ์ˆœ์„œ์— ๋Œ€ํ•œ ๊ณ„์‚ฐ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ์˜ ์ฃผ์„์„ ๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด์ž.

๐Ÿ›  ์ฝ”๋“œ


class Solution:
    result = []
    def diffWaysToCompute(self, input: str) -> List[int]:
        def operation(le, ri, oper):
            sm = 0
            result = []
            for l in le:
                for r in ri:
                    if oper == "+":
                        sm = l + r
                    elif oper == "-":
                        sm = l - r
                    elif oper == "*":
                        sm = l * r
                    result.append(sm)
            return result
        results = []
        
        # ์—ฐ์‚ฐ์ž์—†์ด ์˜ค์ง ์ˆซ์ž๋งŒ์„ ๊ฐ€์งˆ ๋•Œ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ฐ”๋กœ ๋ฐ˜ํ™˜.
        if input.isdigit():
            return [int(input)]
        
        # ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ฐ’์ด ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต์ด ํ•„์š”ํ•˜๋‹ค.
        for i in range(len(input)):
            if input[i] in '+-*':
            	# ํ˜„์žฌ ์—ฐ์‚ฐ์ž ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 
                left = self.diffWaysToCompute(input[:i])
                right= self.diffWaysToCompute(input[i + 1:])
                
                # ์–‘์ชฝ ๊ฒฐ๊ณผ๋ฅผ ๋ณ‘ํ•ฉํ•ด์„œ ๋‚˜์˜จ ๊ฐ’๋“ค์„ ๋„ฃ์–ด์คŒ
                # ์—ฌ๋Ÿฌ ๊ฐ’์ด ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์€ ์ˆœ์„œ๋งˆ๋‹ค ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ!
                results.extend(operation(left, right, input[i]))
        return results
                
                

๐Ÿ“ ์ •๋ฆฌ


์žฌ๊ท€ ์ข…๋ฃŒ์กฐ๊ฑด์œผ๋กœ input.isdigit()์ธ ์ด์œ ๋Š” ๋งŒ์•ฝ len(input) == 1 ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ˆซ์ž๊ฐ€ ์‹ญ์˜์ž๋ฆฌ์ˆ˜ ์ด์ƒ์ผ ๋•Œ๋ฅผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋ผ์„œ, ์˜ค์ง ์ˆซ์ž๋งŒ ์žˆ์„ ๋•Œ๋ผ๊ณ  ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๐ŸŽˆ ์ฐธ๊ณ 


Book ๋งํฌ

profile
Go Go

0๊ฐœ์˜ ๋Œ“๊ธ€