매일 매일 성장하는 섭섭군

[Seop's의 코드풀이] Back_Joon 9012 괄호 본문

알고리즘 문제풀이/백준

[Seop's의 코드풀이] Back_Joon 9012 괄호

섭섭군 2020. 4. 20. 20:16
반응형

이번에 살펴 볼 문제는 올바른 괄호인가를 판단하는 문제입니다.

 

먼저 문제의 조건과 입출력이 어떻게 진행이 되는지 한번 살펴보도록 하겠습니다.

 

소괄호로만으로 이루어진 문자열이 주어졌습니다. 

덕분에 우리는 "(" 와 ")"만 구분하면됩니다. 

저는 본 문제에서 Stack을 활용해서 문제를 풀었습니다.

문제를 푼 과정은 다음과 같은 과정으로 풀었는데요

 

- 문자열을 받아온 후 하나씩 체크해 봅니다.

- 만약 "(" 문자가 온다면 스택에 추가 해 줍니다.

- ")" 이 문자가 왔을 시 스택에 저장되어있는 문자가 있는지 확인하고 있다면 pop 하고 없다면 정답은  No 가 출력되게 됩니다.

- 문자열을 다 순회 하였음에도 불구하고 Stack 에 문자가 있다면 No 를 출력합니다. 그 이외의 경우에는 YES를 출력합니다.

 

제가 작성한 코드는 다음과 같습니다. Python으로 작성하였습니다.

import sys
input = sys.stdin.readline

N = int(input())
for _ in range(N) :
    stack = []
    answer = True
    s = input().rstrip()
    for i in s :
        if i == "(" :
            stack.append(i)
        elif i == ")" :
            if stack :
                check = stack.pop()
            else : 
                answer = False
                break
    if stack or answer == False:
        print("NO")
    else :
        print("YES")

 

소괄호만 있는 문제여서 그리 어렵지 않게 해결 할 수 있는 문제였습니다.

 

다음 포스팅에서 또 찾아뵙도록 하겠습니다.

반응형
Comments