Study Anything ๐Ÿง

1249. Minimum Remove to Make Valid Parentheses ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜๋ฌธ์ œ ํ’€์ด/LeetCode

1249. Minimum Remove to Make Valid Parentheses

์†” 2022. 3. 15. 23:47

#String #Stack

 

๊ด„ํ˜ธ '(', ')' ๋‚˜ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ๊ด„ํ˜ธ๋ฅผ ์‚ญ์ œํ•œ ์œ ํšจ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋ผ.

 

์ผ๋ฐ˜์ ์œผ๋กœ, ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ์˜ ๊ฒฝ์šฐ์— ์œ ํšจํ•˜๋‹ค.

  • ๋นˆ ๋ฌธ์ž์—ด์ด๊ฑฐ๋‚˜ ์†Œ๋ฌธ์ž๋งŒ ํฌํ•จ๋œ ๋ฌธ์ž์—ด
  • ์œ ํšจํ•œ ๋ฌธ์ž์—ด A,B ๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ฌธ์ž์—ด
  • ์œ ํšจํ•œ ๋ฌธ์ž์—ด A๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด (A)

 


 

Trial 1 : Python3, 22/03/15

class Solution:
    def minRemoveToMakeValid(self, s: str) -> str:
        s = list(s)     # ๋ฌธ์ž์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜
        tmp = []        # ๊ด„ํ˜ธ ์ž„์‹œ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ ์„ ์–ธ
        for i, char in enumerate(s):	# enumerate() ๋ฉ”์†Œ๋“œ๋Š” ์ธ๋ฑ์Šค์™€ ์š”์†Œ ํ•จ๊ป˜ ๋ฐ˜ํ™˜
            if char == '(':
                tmp.append(i)   # ์š”์†Œ๊ฐ€ '(' ์ผ ๋•Œ ์ž„์‹œ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ
            elif char == ')':
                if tmp:         # ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด False, ์•„๋‹ˆ๋ฉด True ๋ฐ˜ํ™˜
                    tmp.pop()   # ์š”์†Œ๊ฐ€ ')' ์ด๊ณ  ์ž„์‹œ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š์„ ๋•Œ
                else:
                    s[i] = ''   # ์š”์†Œ๊ฐ€ ')' ์ด๊ณ  ์ž„์‹œ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ
        while tmp:
            s[tmp.pop()] = ''   # ์ž„์‹œ๋ฆฌ์ŠคํŠธ์— ๋‚จ์€ '(' ์ฒ˜๋ฆฌ
        return ''.join(s)

ํ’€์ด

๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ฉด ๋ฌธ์ž์—ด์— '(' (์ดํ•˜ ์•ž๊ด„ํ˜ธ) ๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ')' (์ดํ•˜ ๋’ท๊ด„ํ˜ธ) ๊ฐ€ ๋‚˜์™€์•ผ ํ•˜๋ฉฐ ์–ด๋Š ํ•œ ์ง์ด ๋ชจ์ž๋ผ๋ฉด ํ•ด๋‹น ๊ด„ํ˜ธ๋Š” ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค.

๋ฌธ์ž์—ด์˜ ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์•ž๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ์ž„์‹œ๋ฆฌ์ŠคํŠธ์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๊ณ  ์ดํ›„์— ๋’ท๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ์ž„์‹œ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

๋งŒ์•ฝ ๋ฌธ์ž๊ฐ€ ๋’ท๊ด„ํ˜ธ์ธ๋ฐ ์ž„์‹œ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด(์•ž๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜จ ์ ์ด ์—†์œผ๋ฉด) ๋’ท๊ด„ํ˜ธ ๋ฌธ์ž๋ฅผ ์ง€์šด๋‹ค.

๋ฌธ์ž์—ด ํƒ์ƒ‰์ด ๋๋‚˜๊ณ  ์ž„์‹œ๋ฆฌ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋‚จ์•„์žˆ๋Š” ์•ž๊ด„ํ˜ธ๋ฅผ ์ง€์šด๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด ์‚ฌ์šฉํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•  ๋•Œ๋Š” join() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

* str.join(list) : str+list(str์œผ๋กœ ๋ณ€ํ™˜)

* ์กฐ๊ฑด๋ฌธ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด False, ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด True ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

๋ฆฌ๋ทฐ

๋Ÿฐํƒ€์ž„ ์ตœ๋Œ€ 98.15%, ๋ฉ”๋ชจ๋ฆฌ ์ตœ๋Œ€ 66.40% ๊นŒ์ง€์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ๋‹ค.

ํŒŒ์ด์ฌ์˜ ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ์™€ ์„ฑ์งˆ์„ ์ด์šฉํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜์”ฉ ์–ป์–ด๊ฐ€๊ณ  ์žˆ์–ด์„œ ๊ธฐ๋ถ„์ด ์ข‹๋‹ค.

 

 

728x90

'์•Œ๊ณ ๋ฆฌ์ฆ˜๋ฌธ์ œ ํ’€์ด > LeetCode' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

690. Employee Importance  (0) 2022.03.23
1470. Shuffle the Array  (0) 2022.03.10
118. Pascal's Triangle  (0) 2022.03.08
413. Arithmetic Slices  (0) 2022.03.04
804. Unique Morse Code Words  (0) 2022.02.27
Comments