[Python -ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

2020. 12. 31. 01:47ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ '(' ๋ฌธ์ž๋กœ ์—ด๋ ธ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ง์ง€์–ด์„œ ')' ๋ฌธ์ž๋กœ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ()() ๋˜๋Š” (())() ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค. )()( ๋˜๋Š” (()( ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ

programmers.co.kr

 

๋ฌธ์ œ ์„ค๋ช…

๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ '(' ๋ฌธ์ž๋กœ ์—ด๋ ธ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ง์ง€์–ด์„œ ')' ๋ฌธ์ž๋กœ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

  • ()() ๋˜๋Š” (())() ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • )()( ๋˜๋Š” (()( ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค.

'(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌธ์ž์—ด s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด true๋ฅผ return ํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ด๋ฉด false๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๋ฌธ์ž์—ด s์˜ ๊ธธ์ด : 100,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
  • ๋ฌธ์ž์—ด s๋Š” '(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

 

 

 

 

 

 

 

 

 

 

์ฒ˜์Œ์— ์ด ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๋งจ ์ฒ˜์Œ ๋ฌธ์ž์—ด์ด '(' ์ธ์ง€, ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์—ด์ด ')' ์ธ์ง€, '('์™€ ')' ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์€์ง€๋ฅผ ๋จผ์ € ํŒ๋ณ„ํ•ด์ฃผ๊ณ  

')' ๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€์˜ '('์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ผ ๋’ค,  ')' ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด '(' ์™€ ')' ๊ฐœ์ˆ˜๊ฐ€ ๋งž์œผ๋ฉด flag์— True ํ‹€๋ฆฌ๋ฉด False ํ•˜๋Š” ์‹์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€์—ˆ๋Š”๋ฐ ๊ฒฐ๊ณผ๋Š” ํšจ์œจ์„ฑ 1 ๋ฒˆ ๊ณผ, ๋ฌธ์ œ 5,11๋ฒˆ,๋“ฑ์ด ํ‹€๋ ธ์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์–ด temp์— '('์ด๋ฉด ์ €์žฅํ•˜๊ณ 

temp์— ๊ธธ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ  ์ฆ‰, temp์— '('๊ฐ€ ์กด์žฌํ•˜๊ณ   temp์˜ ๋งจ ๋งˆ์ง€๋ง‰ ์›์†Œ๊ฐ€ '(' ์ด๋ฉด temp์—์„œ '(' ์„ ๊บผ๋‚ธ๋‹ค.

๋งŒ์•ฝ ์œ„ ์ƒํ™ฉ๊ฐ€ ๋ฐ˜๋Œ€๋ผ๋ฉด ๋ฌด์กฐ๊ฑด ๊ด„ํ˜ธ์— ์ง์ด ๋งž์ง€์•Š๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— False๋ฅผ return ํ•ด์ค€๋‹ค.

for ๋ฌธ์ด ๋๋‚œ ํ›„ temp๊ฐ€ empty์ธ์ง€ ํ™•์ธํ•˜์—ฌ 0์ด๋ฉด True ์•„๋‹ˆ๋ฉด False๋ฅผ return ํ•œ๋‹ค.

 

ํ’€์ด ๊ณผ์ •

def solution(s):
    temp = []
    for i in s:
        if i == '(':
            temp.append(i)
        else:
            if len(temp) >= 1 and temp[-1] == '(':
                temp.pop()
            else:
                return False

    if len(temp) == 0:
        return True
    else:
        return False

 

๋ฐ˜์‘ํ˜•