항해99 TIL [12/9]

이지연·2021년 12월 10일
0

항해99 TIL

목록 보기
28/33
post-thumbnail

어느덧 날짜는 목요일이 되었고 알고리즘 주차도 거의 끝을 다해가고 있다. 나는 오늘도 계속해서 알고리즘에 대해 좀 더 공부하고 벨로그에 내 나름대로 정리해보고자 한다.

괄호

해결 포인트

  • "("가 나올 때는 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")
profile
개발하는 디자이너입니다.

0개의 댓글