๐ก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 )
๋ฌธ์ ์ค๋ช
๋ค์ ๊ท์น์ ์งํค๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ด๋ผ๊ณ ์ ์ํฉ๋๋ค.
- (), [], {} ๋ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ ๋๋ค.
- ๋ง์ฝ 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 |