๐ ๋ฐฑ์ค 4949 - ๊ท ํ์กํ ์ธ์
๋ฌธ์ : ๋ฐฑ์ค 4949 - ๊ท ํ์กํ ์ธ์
๐ก ๋์ ํ์ด
๋ฌธ์ ์ ์กฐ๊ฑด์ ์ ๋ฐ์ ธ์ผ ํ๋๋ฐ ๋ง์ง๋ง ์กฐ๊ฑด(์ง์ ์ด๋ฃจ๋ ๋ ๊ดํธ๊ฐ ์์ ๋, ๊ทธ ์ฌ์ด์ ์๋ ๋ฌธ์์ด๋ ๊ท ํ์ด ์กํ์ผ ํ๋ค.
)์ ๋ฌธ์์ด ๊ณต๋ฐฑ์ ๋๊ฐ์ด ์ค์ผ ํ๋ ๊ฑด๊ฐ?๋ผ๋ ์๊ฐ์ด ๋ค๋ฉด์ ์กฐ๊ธ ํท๊ฐ๋ ธ๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ์ ์ฃผ์ด์ ธ์์ง ์๊ธฐ๋๋ฌธ์ ๊ณ ๋ คํ์ง ์์๋ ๋๋ค.
์ฌ๋ฐ๋ฅธ๊ดํธ
๋ฅผ ์ฐพ๋ ๋ฌธ์ ๋ ์ฌ๋ฌ ๊ฐ์ง T.C
๋ฅผ ๋ฃ์ด๊ฐ๋ฉด์ ์๋ฌ๊ฐ ๊ฑธ๋ฆฌ์ง ์๊ฒ ๋ก์ง์ ์ง๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค.
๋
ผ์ธ๋ก while True
์ while 1
์ ์ฐจ์ด๋ฅผ ๋ฌผ์ด๋ณด๋ ์ง๋ฌธ๋ค์ด ๊ฝค ์์๋๋ฐ, ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด python 3์์ ๋ ๊ฐ์ ์ฝ๋์ ์๊ฐ ์ฐจ์ด๋ ์๋ค. ์กฐ๊ธ ๋ง๋ถ์ฌ์ ๋งํ์๋ฉด python 2
์์๋ while 1
์ด ๋ ์ฝ 3 ~ 4์ด
๊ฐ๋ ๋ ๋น ๋ฅธ๋ฐ ์ ๊ทธ๋ฌ๋๋ฉด python 2
์์๋ True
ํค์๋๊ฐ ์ ์๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ํ์ง๋ง python 3
์์๋ True
ํค์๋๊ฐ ์ ์๋์ด์๊ธฐ ๋๋ฌธ์ ์ธํฐํ๋ฆฌํฐ๊ฐ ๋น ๋ฅด๊ฒ ์ฝ์ด์ฌ ์ ์๋ค. ์ฆ, while 1
, while True
์ ์คํ์๊ฐ์ ๋์ผํ๋ค. (stack_over_flow)
- ์ฌ๋ ๊ดํธ(
(
,[
)๋stack
์ ๋ฃ๋๋ค. stack
์ด ์์ผ๋ฉด์ ๋ซํ ๊ดํธ๊ฐ ๋์ฌ ๋stack[-1]
๊ณผ ์ง์ด ๋ง๋ ๊ดํธ๋ฉดpop
์ ์ํค๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด flag๋ฅผFalse
๋ก ๋ฐ๊พผ๋ค.stack
์ด ์์ผ๋ฉด์ ๋ซํ๊ดํธ๊ฐ ๋์ค๋ฉด ์ ์์ ์ผ๋ก ์ง์ด ๋ง์ง ์์ผ๋ฏ๋ก ๋ง์ฐฌ๊ฐ์ง๋ก flag๋ฅผFalse
๋ก ๋ฐ๊พผ๋ค.flag == True
์ด๋ฉด์(์ ์์ ์ธ ๊ดํธ)not stack
์ด๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๊ณ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ ์ด์ด๋ค.
# ๋์ ์ฝ๋
import sys
input = sys.stdin.readline
while True:
s = input().rstrip()
if s == '.': # ์ข
๋ฃ ์กฐ๊ฑด
break
stack = []
flag = True # ์ง์ ์ด๋ฃจ์ง ์๋ ๊ฒฝ์ฐ
for i in range(len(s)):
if s[i] == '(' or s[i] == '[':
stack.append(s[i])
elif stack and (s[i] == ')' or s[i] == ']'): # stack์ ์์ง๋ง ๋ซํ ๊ดํธ๊ฐ ๋์ค๋ ๊ฒฝ์ฐ
if s[i] == ')' and stack[-1] == '(':
stack.pop()
elif s[i] == ']' and stack[-1] == '[':
stack.pop()
else: # (])
flag = False
elif not stack and (s[i] == ')' or s[i] == ']'): # stack์ด ์์ผ๋ฉด์ ๋ซํ ๊ดํธ๊ฐ ๋์ค๋ ๊ฒฝ์ฐ, )(
flag = False
if flag and not stack:
print('yes')
else:
print('no')
# ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋
import sys
input = sys.stdin.readline
while 1:
string = input().rstrip()
stack = []
true_flag = 1
for cha in string:
if cha == '(' or cha == '[':
stack.append(cha)
elif cha == ')':
if stack and stack[-1] == '(':
stack.pop()
else:
true_flag = 0
break
elif cha == ']':
if stack and stack[-1] == '[':
stack.pop()
else:
true_flag = 0
break
if string == '.':
break
print("yes" if true_flag and not stack else "no")
'Algorithm > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 2504 - ๊ดํธ์ ๊ฐ (2) | 2021.07.07 |
---|---|
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 3986 - ์ข์ ๋จ์ด (3) | 2021.07.06 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 10799 - ์ ๋ง๋๊ธฐ (0) | 2021.07.05 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 12789 - ๋ํค๋ํค ๊ฐ์๋๋ฆฌ๋ฏธ (0) | 2021.06.30 |
[ ํ์ด์ฌ(python) ] ๋ฐฑ์ค 1874 - ์คํ ์์ด (0) | 2021.06.30 |
๋๊ธ