올바른 괄호

NJW·2022년 1월 24일
0

코테

목록 보기
10/170

들어가는 말

괄호'()'의 짝이 맞는지를 검사하는 문제다. 보자마자 스택으로 풀어야 겠다고 생각했다.

코드 설명

일단 i의 길이까지 for문을 돌린다. 만일 여는 부분이 나온다면 스택에 넣고 닫는 부분이 나온다면 조건을 걸어서 여는 부분이 있는지 확인을 해준다. 이때 여는 부분 없이 닫는 부분이 있다면 문제가 있다는 거다. 그렇게 for문을 완료하면 스택이 비어있는지 확인해서 비어있지 않다면 false로 변경해준다.

코드

#include<string>
#include <iostream>
#include<stack>

using namespace std;

bool solution(string s)
{
    bool answer = true;
    stack<int> st;
    
        for(int i=0; i<s.size(); i++){
        if(s[i] == '('){
            st.push(s[i]);
        }else{
            if(!st.empty() && st.top() == '('){
                st.pop();
            }else{
                st.push(s[i]);
            }
        }
        }

    if(!st.empty()){
        answer = false;
    }

    return answer;
}
profile
https://jiwonna52.tistory.com/

0개의 댓글