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() 하며 이상하게 돌게 된 것 같아 그 부분을 수정해주었다.
'CodingTest > Baekjun Online Judge' 카테고리의 다른 글
[ BOJ / 파이썬 ] 2178.미로 탐색 (0) | 2023.01.27 |
---|---|
[ BOJ / 파이썬 ] 1926. 그림 (0) | 2023.01.27 |
[ BOJ / 파이썬 ] 10828 스택 (0) | 2023.01.27 |
[ 백준 ] 1406 에디터 (0) | 2023.01.22 |
[ BOJ / 파이썬 ] 23290 마법사 (0) | 2022.10.15 |