백준

백준 9012번 어떻게 풀었나. 재정의, 추상화, 계획, 검증하기

kimbro6 2023. 1. 11. 00:01
  • 푼 방법
    • 처음에 알고리즘은 그럴듯하게 생각했음.
    • 처음 생각한 알고리즘을 바로 코드로 구현함
    • 그런데 그 알고리즘이 시간복잡도는 전혀 생각하지 않은 것임
    • 그래서 코드 짜는데, 쓰레기를 생산하고있다는 생각이 듬 (계속해서 생각하지 못했던 반복문과 조건문이 추가된다)
    • ____________________________________________________________________________________
    • 구글링을 해 보고 내가 왜 이런 코드를 생각하지 못했나 생각해봄
    • 일단,, 복붙해서 맞게 함..
  • 좋았던점
    • 어떻게 해서든 직접 알고리즘을 만들어보려고 했다...ㅠ
  • 고치면 좋을 부분
    • 알고리즘을 생각할때 시간복잡도를 생각할 수 있었으면 좋겠다.
    • 계획이 완벽하게 되지 않았는데 무작정 코드를 작성하기 시작함.
    • 문제를 잘 재정의 해야겠다. *이거때문에 문제를 어떻게 풀지 갈라짐
  • 새롭게 안 부분
    • __________
      for ~~~
      else:
          ~~~
      __________
      에서 else문은 for루프가 정상적으로 완료된 경우에만 실행된다.
      for문 안에서 break걸리면 실행 되지 않는다.
  • 더 알고 싶은 부분
    • 재정의, 추상화, 계획, 검증 잘 하는법. 
    • 문제를푸는 알고리즘을 생각해 내는 알고리즘.
    • 다음 포스팅에 합니다..

코드 

import sys

N = int(input())

for i in range(N):
	stack =[]
	A = list(sys.stdin.readline().rstrip())
	for j in A:
		if j == "(":
			stack.append(j)
		elif j == ")":
			if stack:
				stack.pop()
			else:
				print("NO")
				break
	else:
		if not stack:
			print("YES")
		else:
			print("NO")