반응형
백준 알고리즘 파이썬 문제입나다
4949 문제:
오답 코드(보고 여러 번 되새기기!)
def main():
while True:
inputStr = str(input())
if inputStr == '.':
break
else:
solve(inputStr)
def solve(inputStr):
stack = []
flag = True
for i in range(0, len(inputStr)):
# openCases are unConditionally inserted
if inputStr[i] == "(" or inputStr[i] == "[":
stack.append(inputStr[i])
elif inputStr[i] == "]":
if len(stack) == 0: # check whether the stack is empty or not
print("no")
flag = False
break
if stack[-1] == "[":
stack.pop()
continue
elif stack[-1] != "[":
print("no")
break
elif inputStr[i] == ")":
if len(stack) == 0:
print("no")
flag = False
break
if stack[-1] == "(":
stack.pop()
continue
elif stack[-1] != "(":
print("no")
break
if len(stack) == 0 and flag :
print("yes")
if __name__ == "__main__":
main()
조건문에서는 조건만. 결과 출력은 한 곳으로!
솔루션 코드
# 프린트 남발하지 말자.. ㅠㅠ 어디가 문제인지 알아보기 너무 힘듬..
def main():
while True:
inputStr = str(input())
if inputStr == '.':
break
else:
solve(inputStr)
def solve(inputStr):
stack = []
flag = True
for i in inputStr:
if i == "(" or i == "[": # openCases are unConditionally inserted
stack.append(i)
elif i == "]":
if len(stack) == 0: # check whether the stack is empty or not
flag = False
break
if stack[-1] == "[": stack.pop()
else:
flag = False
break
elif i == ")":
if len(stack) == 0:
flag = False
break
if stack[-1] == "(": stack.pop()
else:
flag = False
break
if len(stack) == 0 and flag: print("yes")
else: print("no")
if __name__ == "__main__":
main()
반응형