[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ / ํŒŒ์ด์ฌ / Python / ์›”๊ฐ„์ฝ”๋“œ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ2
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ / ํŒŒ์ด์ฌ / Python / ์›”๊ฐ„์ฝ”๋“œ์ฑŒ๋ฆฐ์ง€ ์‹œ์ฆŒ2

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’กsolutions )

๐Ÿ’ฌ stack์— ๊ด„ํ˜ธ๋ฅผ ํ•˜๋‚˜์”ฉ ์ €์žฅํ•˜๋ฉฐ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง ๊ตฌํ˜„.

๐Ÿ’ฌ ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ(๋‹ซ๋Š” ๊ด„ํ˜ธ)๊ฐ€ ๋‚˜์˜ค๋ฉด stack์— ์ด๋ฏธ ์ €์žฅํ–ˆ๋˜ ๋งˆ์ง€๋ง‰ -1๋ฒˆ์งธ ๊ด„ํ˜ธ์™€ ์ง์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋ฉฐ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋‹จ.

๐Ÿ’ฌ ์ฒซ ๋ฒˆ์งธ if ์กฐ๊ฑด๋ฌธ์—์„œ๋Š” stack์ด ๋น„์–ด์žˆ์„ ๋•Œ ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ(๋‹ซ๋Š” ๊ด„ํ˜ธ)๊ฐ€ ๋‚˜์˜ค๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ชจ์–‘์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋ฐ”๋กœ breakํ•˜์—ฌ ๋‹ค์Œ ์ผ€์ด์Šค๋กœ ๋„˜์–ด๊ฐ.

๐Ÿ’ฌ ์ฒ˜์Œ์— ํ…Œ์ŠคํŠธ์ผ€์ด์Šค 13๋ฒˆ๋งŒ ํ‹€๋ ค์„œ ์งˆ๋ฌธํ•˜๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ์Œ. {{{{{์˜ ๊ฒฝ์šฐ์— ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งˆ์ง€๋ง‰ if ์กฐ๊ฑด๋ฌธ์—์„œ and not stack ์กฐ๊ฑด์„ ๋„ฃ์–ด stack์ด ์ตœ์ข…์ ์œผ๋กœ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๋กœ ์นด์šดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ. 

 

๐Ÿ‘จ‍๐Ÿ’ปcode )

def solution(s):
    bracket_dict = {')': '(', '}': '{', ']': '['}
    answer = 0
    for i in range(len(s)):
        stack = []
        chk = 0
        for bracket in s:
            if stack == []:
                if bracket in bracket_dict:
                    chk = 1
                    break
                
            if bracket in bracket_dict:
                if bracket_dict[bracket] != stack[-1]:
                    chk = 1
                    break
                stack.pop()
            else:
                stack.append(bracket)
        if not chk and not stack:
            answer += 1
        s = s[1:] + s[0]
    return answer

๐Ÿ“Œdescription )

 

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

 

programmers.co.kr


๋ฌธ์ œ ์„ค๋ช…

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

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

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


์ œํ•œ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

sresult

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




๋ฐ˜์‘ํ˜•