1. ๋ฌธ์ ์์ฝ
๊ดํธ๊ฐ ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ก๋ค๋ ๊ฒ์ '(' ๋ฌธ์๋ก ์ด๋ ธ์ผ๋ฉด ๋ฐ๋์ ')' ๋ฌธ์๋ก ๋ซํ์ผ ํ๋ค๋ ๋ป์ด๋ค.
๋ฌธ์์ด s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด True๋ฅผ, ์๋๋ฉด False๋ฅผ ๋ฐํํ๋ค.
2. ์ ๊ทผ ๋ฐฉ์ ๋ฐ ํฌ์ธํธ
๊ฐ์ฅ ์ต๊ทผ์ ์ด๋ฆฐ ๊ดํธ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋ซํ์ผ ํ๋ฏ๋ก LIFO(Last-In-First-Out) ๊ตฌ์กฐ์ธ ์คํ์ ํ์ฉํ๋ค.
- โ
์ด๊ธฐ:
'('๋ฅผ ๋ง๋๋ฉด ์คํ์ ๋ฌด์กฐ๊ฑดpushํ๋ค. - โ
๋ซ๊ธฐ:
')'๋ฅผ ๋ง๋๋ฉด ์คํ์์popํ์ฌ ์ง์ ๋ง์ถ๋ค. - โ ์์ธ: ๋ซ์ผ๋ ค๋๋ฐ ์คํ์ด ๋น์ด์๊ฑฐ๋, ๋ชจ๋ ๊ฒ์ฌ๊ฐ ๋๋ฌ๋๋ฐ ์คํ์ ๊ดํธ๊ฐ ๋จ์์์ผ๋ฉด ์๋ชป๋ ๊ดํธ์ด๋ค.
3. ๊ตฌํ ์ฝ๋ (Python)
def solution(s):
stack = []
for bracket in s:
# '('๋ ๋ฌด์กฐ๊ฑด push
if bracket == '(':
stack.append(bracket)
# ')'์ผ ๋
else:
# stack์ด ๋น์ด์์ผ๋ฉด ์ง์ด ์์ผ๋ฏ๋ก ์ฆ์ False ๋ฐํ
if not stack:
return False
stack.pop()
# ๋ง์ง๋ง์ stack์ด ์์ ํ ๋น์ด์ผ True (๋จ์์์ผ๋ฉด False)
return not stack
4. โ๏ธ ํ๊ณ : ํต๊ณผ๋ง ํ๋ค๊ณ ์ ๋ต์ ์๋๋ค
์ด๊ธฐ ์ฝ๋๋ ํ๋ก๊ทธ๋๋จธ์ค ํจ์จ์ฑ ํ ์คํธ๊น์ง ๋ชจ๋ ํต๊ณผํ์ง๋ง, ์ค์ค๋ก ๋ณต๊ธฐํ๋ฉฐ ์น๋ช ์ ์ธ ๋ ผ๋ฆฌ์ ๊ฒฐํจ์ ๋ฐ๊ฒฌํ๋ค.
๐ซ ์ด๊ธฐ ์ฝ๋์ ๋ ผ๋ฆฌ์ ์ค๋ฅ
๊ธฐ์กด ์กฐ๊ฑด: if not stack or bracket == '('
์ด ์กฐ๊ฑด์ ')'๊ฐ ๊ฐ์ฅ ๋จผ์ ๋ค์ด์ฌ ๋๋ ์คํ์ ์ถ๊ฐํด๋ฒ๋ฆฐ๋ค. ์ดํ ๋ ๋ค๋ฅธ ')'๊ฐ ๋ค์ด์ค๋ฉด ๊ธฐ์กด์ ')'๋ฅผ ๊บผ๋ด๋ฉฐ ์คํ์ด ๋น๊ฒ ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก "))" ๊ฐ์ ๋ช
๋ฐฑํ ์ค๋ต์ True๋ก ํ๋จํ๋ ์ค๋ฅ๊ฐ ์์๋ค.
๐ก ๋ฐฐ์ด ์
- ์ฃ์ง ์ผ์ด์ค์ ํ: ํ ์คํธ ์ผ์ด์ค๊ฐ ํต๊ณผ๋์๋ค๊ณ ์์ฌํ์ง ๋ง๊ณ , ์ง์ ๋ฐ๋ก๋ฅผ ๋์ ํด๋ณด๋ ์ต๊ด์ ์ค์์ฑ์ ๋ฐฐ์ ๋ค.
- ๋ช ํํ ์์ธ ์ฐจ๋จ: ๋ซ๋ ๊ดํธ๊ฐ ๋์์ ๋ ์ง์ ์ฐพ์ ์ ์๋ ์ํ๋ผ๋ฉด ์ฆ์ ์ข ๋ฃํ๋ ์ค๊ณ๊ฐ ํจ์ฌ ๊ฒฌ๊ณ ํ๋ค.
- ์ฑ๋ฅ๋ณด๋ค ๋ ผ๋ฆฌ: ์ด๋ค ์ ๋ ฅ๊ฐ์๋ ํ๋ค๋ฆฌ์ง ์๋ ๋ก์ง์ ์ค๊ณํ๋ ์ฐ์ต์ด ์ฐ์ ๋์ด์ผ ํจ์ ๋ค์ ํ๋ฒ ์๊ฒผ๋ค.
'๐งฉ Algorithm > [Programmers] ์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ํ๋ก์ธ์ค (0) | 2026.04.07 |
|---|---|
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2026.04.01 |
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ๊ฐ์ ์ซ์๋ ์ซ์ด (0) | 2026.03.31 |
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ๋ฒ ์คํธ์จ๋ฒ (0) | 2026.03.30 |
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ์์ (0) | 2026.03.21 |