본문 바로가기
Algorizym/Python

[백준 알고리즘]BOJ_4949문제 (균형잡힌 세상)

by Dev. Pluto 2021. 8. 7.
반응형

 

 

백준 알고리즘 파이썬 문제입나다

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()
반응형