어느덧 날짜는 목요일이 되었고 알고리즘 주차도 거의 끝을 다해가고 있다. 나는 오늘도 계속해서 알고리즘에 대해 좀 더 공부하고 벨로그에 내 나름대로 정리해보고자 한다.
해결 포인트
"("가 나올 때는 1을 더해주고, ")"가 나올 때는 1을 빼줘서 최종 sum이 0이 되면 해결된 것. 처음부터 문제 풀이를 해보면, t 변수로 테스트 케이스의 수를 입력받고 for문을 통해 테스트 케이스 수만큼 반복해주면서 그 안에서 check할 문자열을 입력받아 줌.
다음으로 check 변수로 받은 문자열은 ls 변수로 list로 입력받은 후 1을 더하고 빼주는 것을 기록할 sum 변수를 만들어서 0으로 초기화 시켜둠.
다음으로는 key point에 써둔 것처럼 for문으로 반복해주는데 여기서 for문 안에 sum이 0보다 작아질 때, 즉 ")"가 나와서 sum에 -1이 축적되어 조건을 만족하지 못할 때 "NO"를 출력하고 break 해줌.
나머지는 sum이 0보다 크다면 문자열에 "("가 하나 더 있는거니 조건에 만족하지 못하여 "NO"가 출력됨.
▶ 마지막으로 else가 아니라 elif를 써서 또 하나의 조건문으로 sum이 0일 때 즉, "("와 ")"가 만나서 0이 될 때만 "YES"를 출력하면 최종 해결.
# 9012번 : 괄호
t = int(input())
for _ in range(t):
check = input()
ls = list(check)
sum = 0
for i in ls:
if i == "(":
sum += 1
elif i == ")":
sum -= 1
if sum < 0:
print("NO")
break
if sum > 0:
print("NO")
elif sum == 0:
print("YES")