코테 준비를 위해 ... 미뤄뒀던 백준을 시작했다.
나는 백준을 정말 안풀어서.. 브론즈이기도 하고 공부를 하지 않았기 때문에 파이썬에 익숙해지고자 자료구조 문제부터 차근차근 풀어보려고 한다.
문제는 아래와 같다.

def isPS(ps):
count =0
if ps[0] == ')': return False
for ch in ps:
if ch == '(':
count+=1
else:
count -=1
if count < 0:
return False
return count == 0
if __name__ == "__main__":
cnt = int(input())
for _ in range(cnt):
ps = input().strip()
if isPS(ps):
print("YES")
else:
print("NO")
이전까지는 문제를 풀 때 키보드에 손부터 갔던 습관을 고치기 위해 문제 해결을 위한 로직을 머릿속으로 먼저 생각해보려고 노력했다.
가장 먼저 string을 입력받을 개수를 받게끔 했다.
반복문으로 입력받은 개수만큼 실행시켰고, True/False 판단하는 함수를 따로 정의했다.
괄호를 카운트할 변수를 선언 후, 반복 문 전에 가장 앞에 오는 문자가 ')' 라면 바로 False를 받도록 했다.
테스트 데이터가 크다면 .. 의미가 있었을 수도 있지 않을까? 하는 생각으로 넣어봤다.
반복문으로 ps의 문자열을 하나씩 '('일 경우 count를 +1을 해주었고 ')'일 경우 -1을 해주었다. 한 쌍의 괄호가 되도록 하기 위함이다.
만약 count가 음수가 된다면 ')'가 '('보다 많이 오게 됨으로 vps의 조건을 충족할 수 없게 된다.
반복문을 모두 돌았을 때 count가 0이 되어야지만 vps의 조건을 충족하게 된다.