https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์„ค๋ช…

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

 

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

 

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

 

 

์ œํ•œ ์‚ฌํ•ญ

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

 

์ž…์ถœ๋ ฅ ์˜ˆ

s result
"[](){}" 3
"}]()[{" 2
"[)(]" 0
"}}}" 0

 

 

์†Œ์Šค ์ฝ”๋“œ
def solution(s):
    answer = 0
    n = len(s)

    for i in range(n):
        stack = []  
        for j in range(n):
            # ๋ฌธ์ž์—ด ํšŒ์ „
            c = s[(i+j)%n]

            # ์—ด๋ฆฐ๊ด„ํ˜ธ์˜ ๊ฒฝ์šฐ
            if c=="(" or c=="[" or c=="{":
                stack.append(c)
            # ๋‹ซํžŒ๊ด„ํ˜ธ์˜ ๊ฒฝ์šฐ
            else:
                # ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
                if len(stack)==0:
                    stack.append(0)
                    break
                # ์Šคํƒ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์„ ํ™•์ธํ•˜๊ณ  ์ง์ด ๋งž๋‹ค๋ฉด ์ œ๊ฑฐ
                elif c==")" and stack[-1]=="(":     
                    stack.pop()
                elif c=="]" and stack[-1]=="[":
                    stack.pop()
                elif c=="}" and stack[-1]=="{":
                    stack.pop()
                # ์ง์ด ๋งž์ง€ ์•Š์€ ๊ฒฝ์šฐ 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
                else:
                    stack.append(0)
                    break
        
        # ์ค‘๊ฐ„์— ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์Šคํƒ์€ ๋น„์–ด์žˆ์œผ๋ฏ€๋กœ +1
        if not stack:
            answer += 1

    return answer

 

ํ’€์ด

  • for๋ฌธ์— ๋”ฐ๋ผ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์„ ํšŒ์ „
  • ๋ฌธ์ž์—ด์ด ์—ด๋ฆฐ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ ์Šคํƒ์— ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€
  • ๋ฌธ์ž์—ด์ด ๋‹ซํžŒ๊ด„ํ˜ธ์ธ ๊ฒฝ์šฐ
    • ๋‹ซํžŒ๊ด„ํ˜ธ์ด๋ฉด์„œ ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด ์•ž์— ์—ด๋ฆฐ๊ด„ํ˜ธ๊ฐ€ ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์Šคํƒ์— 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
    • ๋‹ซํžŒ๊ด„ํ˜ธ์™€ ์Šคํƒ์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์™€ ์ง ๋งž์ถ”๊ธฐ (์ง์ด ๋งž๋‹ค๋ฉด ์ œ๊ฑฐ)
    • ์ง์ด ๋งž์ง€ ์•Š๋‹ค๋ฉด ์Šคํƒ์— 0์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
  • ์ค‘๊ฐ„์— ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์Šคํƒ์— 0์ด ์žˆ์„ ๊ฒƒ์ด๊ณ  ์•„๋‹ˆ๋ผ๋ฉด ์Šคํƒ์ด ๋น„์–ด์žˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ answer + 1

 

๋ฌธ์ž์—ด์„ ํšŒ์ „ํ•˜๋ฉด์„œ ์ง์„ ๋งž์ถฐ์•ผํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ์ข€ ์–ด๋ ค์› ๋‹ค... ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฑ…์—์„œ ์Šคํƒ์˜ ์˜ˆ์‹œ ๋ฌธ์ œ๋กœ ๋‚˜์™€์žˆ์–ด์„œ ์Šคํƒ์œผ๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๋ฌธ์ œ๋งŒ ๋ดค์„ ๋•Œ๋Š” ์Šคํƒ์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ํž˜๋“ค์—ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

+ Recent posts