๋ฌธ์ ์ค๋ช
๊ดํธ๊ฐ ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ก๋ค๋ ๊ฒ์ '(' ๋ฌธ์๋ก ์ด๋ ธ์ผ๋ฉด ๋ฐ๋์ ์ง์ง์ด์ ')' ๋ฌธ์๋ก ๋ซํ์ผ ํ๋ค๋ ๋ป์ ๋๋ค.
์๋ฅผ ๋ค์ด
- "()()" ๋๋ "(())()" ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ ๋๋ค.
- ")()(" ๋๋ "(()(" ๋ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ ๋๋ค.
'(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฌธ์์ด s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด true๋ฅผ return ํ๊ณ , ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ด๋ฉด false๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
- ๋ฌธ์์ด s์ ๊ธธ์ด : 100,000 ์ดํ์ ์์ฐ์
- ๋ฌธ์์ด s๋ '(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1,2,3,4
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
ํ์ด ์ฝ๋
def solution(s):
stack = []
for sym in s:
if stack:
if sym == ')' and stack[-1] == '(':
stack.pop()
else:
stack.append(sym)
else:
stack.append(sym)
answer = True if len(stack) == 0 else False
return answer
์๋ฃ๊ตฌ์กฐ ์คํ์ ์ฌ์ฉํ ๋ฌธ์ ์ด๋ค.
ํ์ด์ฌ์์ ์คํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ list ์๋ฃ๊ตฌ์กฐ์ ํด๋นํ๋ค.
์ฌ๋ฐ๋ฅธ ๊ดํธ์ธ ๊ฒฝ์ฐ, ๋ชจ๋ ๊ดํธ ๊ธฐํธ๋ฅผ ๋ก์ง์ ๋ง๊ฒ ๋ฃ์๋ค ๋บ๋ค๊ณ ํ์ ๋, ์คํ์ ๋จ๋ ๊ฐ์ด ์์ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด, ์ฒ์ ๋ถํฐ ')'๊ฐ ๋์จ๋ค๋๊ฐ, ์คํ์ ์์ธ '(' ๊ธฐํธ๋ณด๋ค ')' ๊ธฐํธ๊ฐ ์ฐ์์ผ๋ก ๋ ๋ง์ด ๋์ค๋ ๊ฒฝ์ฐ์๋
์คํ ๋ด๋ถ์ ')' ๊ธฐํธ๊ฐ ์์ด๊ฒ ๋์ด ๋ก์ง์ด ๋๋ฌ์ ๋ ์คํ ์ ์ฒด๋ฅผ ๋น์ฐ์ง ๋ชปํ๊ฒ ๋๋ค.
์คํ์ด ๋น์ด์์ผ๋ฉด ์กฐ๊ฑด๋ฌธ์์ False, ๋น์ด์์ง ์์ผ๋ฉด True๋ฅผ ๋ฐํํ๋ฏ๋ก
์คํ์ด ๋น์ด์์ง ์์ผ๋ฉด, ์คํ์ ๊ฐ์ฅ ์์ ๊ฐ์ด '('์ด๋ฉด์ ์ด๋ฒ ๊ดํธ๊ฐ ')'์ด๋ฉด stack์ pop ์ฐ์ฐ์ ์งํํ๋ค.
์คํ์ด ๋น์ด์์ง ์๊ณ , '('์ด๊ฑฐ๋ ์คํ์ ๊ฐ์ฅ ์์ ๊ฐ์ด '('๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์คํ์ ์ด๋ฒ ๊ดํธ๋ฅผ ์ฝ์ ํ๋ค.
์คํ์ด ๋น์ด์๋ค๋ฉด ๊ทธ๋ฅ ์ด๋ฒ ๊ดํธ๋ฅผ ์ฝ์ ํ๋ค.
๋ชจ๋ ๊ดํธ๋ฅผ ๊ฑฐ์น๊ณ ๋์ ์คํ ๋ด๋ถ๊ฐ ๋น์ด์๋์ง, ์๋์ง๋ฅผ ํ๋ณํ๋ฉด ์ ๋ต์ด๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํผ๋ณด๋์น ์ (level2, python) (0) | 2022.09.08 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์์ ํํ (level2, python) (0) | 2022.09.08 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ต์๊ฐ ๋ง๋ค๊ธฐ (level2, python) (0) | 2022.09.08 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (level2, python) (0) | 2022.09.08 |
[ํ๋ก๊ทธ๋๋จธ์ค] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (level2, python) (0) | 2022.09.08 |