๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ - ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ2

๋ฟŒ์•ผ._. 2021. 9. 7. 15:49

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ1


<๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ>

๋ฌธ์ œ ์„ค๋ช…

 

๋‹ค์Œ ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

- (), [], {}๋Š” ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
- ๋งŒ์•ฝ A๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, (A), [A], {A} ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, [] ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, ([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
- ๋งŒ์•ฝ A, B๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, AB ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, {} ์™€ ([]) ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ, {}([]) ๋„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

๋Œ€๊ด„ํ˜ธ, ์ค‘๊ด„ํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ์†Œ๊ด„ํ˜ธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
์ด s๋ฅผ ์™ผ์ชฝ์œผ๋กœ x (0 ≤ x < (s์˜ ๊ธธ์ด)) ์นธ๋งŒํผ ํšŒ์ „์‹œ์ผฐ์„ ๋•Œ
s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ๋˜๊ฒŒ ํ•˜๋Š” x์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

 

s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.

 

 

๋ฌธ์ œ ํ’€์ด

   - my solution

def solution(s):
    answer = 0
    
    for i in range(len(s)):
        stack=[]
        check=True
        for j in s: # ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋ณ„
            if j=='[' or j=='(' or j=='{': # ์™ผ์ชฝ ๊ด„ํ˜ธ _ ์ถ”๊ฐ€
                stack.append(j)
            elif j==']': # ๊ฐ ์ง์— ๋งž๋Š” ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ ์ œ๊ฑฐ, ์•„๋‹ˆ๋ฉด check=False
                if len(stack)!=0 and stack[-1]=='[':
                    stack.pop()
                else:
                    check=False
            elif j==')':
                if len(stack)!=0 and stack[-1]=='(':
                    stack.pop()
                else:
                    check=False
            else:
                if len(stack)!=0 and stack[-1]=='{':
                    stack.pop()
                else:
                    check=False
        if check==True and len(stack)==0: # ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋ผ๋ฉด
            answer+=1
            
        s=s[1:]+s[0] # s๋ฅผ ์™ผ์ชฝ์œผ๋กœ x์นธ๋งŒํผ ํšŒ์ „
        
    return answer

 

Level 2๋ผ๊ธธ๋ž˜ ์‚ด์ง ์•„์ฃผ ์กฐ๊ธˆ ๊ฒ์„ ๋จน์—ˆ์ง€๋งŒ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์ด ์•ˆ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ์ด๋‹ค.

๋ฌธ์ œ์—์„œ ์•Œ๋ ค์ค€ ๋‚ด์šฉ ๋”ฐ๋ผ์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋ ๐Ÿ˜

 

1) ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋ณ„

โ‘  [, (, { ์™€ ๊ฐ™์ด ์™ผ์ชฝ ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ stack์— ์ €์žฅ

โ‘ก stack์˜ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ์™ผ์ชฝ ๊ด„ํ˜ธ์™€ ์ง์ด ๋งž์„ ๊ฒฝ์šฐ stack์—์„œ ์ œ๊ฑฐ

โ‘ข ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉฐ stack์˜ ๊ธธ์ด๊ฐ€ 0์ผ ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด๋กœ ํŒ๋ณ„

 

2) s๋ฅผ ์™ผ์ชฝ์œผ๋กœ x์นธ๋งŒํผ ํšŒ์ „

โ‘  ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์™ผ์ชฝ์œผ๋กœ ํ•œ์นธ์”ฉ ๋„˜๊ธด ๊ฐ’์„ s์— ์ €์žฅ

 


์ƒ๊ฐ๐Ÿค”

 

๋ฌธ์ œ๊ฐ€ ์กฐ๊ธˆ ์‰ฌ์› ๋˜ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ทธ๋ž˜๋„ ์‰ฝ๊ฒŒ ํ’€์–ด์„œ ๊ธฐ๋ถ„์ด ์ข‹์•˜๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์กฐ๊ธˆ ์ฝ”๋“œ์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™์•„์„œ ์ชผ๋” ์•„์ฃผ ์ชผ๋” ๋ง˜์— ์•ˆ ๋“ ๋‹ค.


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges