CodingTest/Baekjun Online Judge
[ BOJ / 파이썬 ] 4949.균형잡힌 세상
EEOOOO
2023. 1. 27. 12:11
1차 풀이 . 실패
import sys
input = sys.stdin.readline
def checkIsCorrect(text):
stack = []
pair = {']':'[', ')':'(' }
for t in text:
if t == '[' or t =='(':
stack.append(t)
if t == ']' or t == ')':
if not stack:
return False
if stack and stack[-1] != pair[t]:
return False
if stack and stack[-1] == pair[t]:
stack.pop()
if stack:
return False
else:
return True
def main():
text = ''
while text != '.':
text = input().strip()
if checkIsCorrect(text):
print('yes')
else:
print('no')
if __name__ == '__main__':
main()
맞는 것 같은데 20%에서 끊긴다.. 왜 그럴까 싶어 질문 게시판에 들어갔더니 비슷한 사례가 많았다.
그에 대한 답변 중 참고할 답변 게시글이 있었는데, 얘는 주기적으로 리마인드해야겠다.
( 링크 )
2차 제출 . 성공
def checkIsCorrect(text):
stack = []
pair = {']':'[', ')':'(' }
for t in text:
if t == '[' or t =='(':
stack.append(t)
if t == ']' or t == ')':
if not stack:
return False
if stack and stack[-1] != pair[t]:
return False
if stack and stack[-1] == pair[t]:
stack.pop()
if stack:
return False
else:
return True
def main():
while True:
text = input()
if text == '.':
break
if checkIsCorrect(text):
print('yes')
else:
print('no')
if __name__ == '__main__':
main()
처음에 받아올 때 strip() 하며 이상하게 돌게 된 것 같아 그 부분을 수정해주었다.