[프로그래머스/C++]Lv.2 - 올바른 괄호

YH J·2023년 6월 9일
0

프로그래머스

목록 보기
129/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12909

내 풀이

한글자씩 검사하면서 '(' 가 나오면 num++ ')'가 나오면 num-- 한다. num이 마이너스가 될 경우 바로 false를 반환한다. for문 종료 후 num == 0을 리턴한다.

내 코드

#include <string>
#include <iostream>

using namespace std;

bool solution(string s)
{
    bool answer = true;
    int num = 0;
    for(char c : s)
    {
        if(c == '(')
            num++;
        else
            num--;
        if(num < 0)
            return false;
    }
    return num == 0;
}

다른 사람의 풀이

#include<string>
#include <iostream>
#include <stack>
using namespace std;

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

다른 사람의 풀이 해석

똑같은 풀이는 빼고 2번째 풀이를 가져왔다.
Stack을 이용한건데 '('면 stack에 넣고 ')'를 만나면 스택이 비어있거나 스택의 top이 '('가 아니라면 false를 반환하고 맞으면 stack을 pop한다.

profile
게임 개발자 지망생

0개의 댓글