알고리즘/프로그래머스 2단계

프로그래머스 - 올바른 괄호 - C++

게임만드는학생 2024. 7. 28. 16:00

https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=cpp

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

#include<string>
#include <iostream>

using namespace std;

bool solution(string s)
{
    bool answer = true;

    int oN=0,cN=0;
    for(int i=0;i<s.length();i++)
    {
        if(s[i]=='(')
        {
            oN++;
        }
        else
        {
            cN++;
            if(oN<cN)
                return false;
        }
    }
    if(oN==cN)
        return true;
    else 
        return false;
}

 

괄호가 올바르게 돼있는지를 판별하는 문제이다.

짝이 안맞거나 ) 이게 ( 보다 먼저있거나 하면 올바르지 않은것이다. 

따라서 ( , ) 을 각각 카운트하며 ( 의 개수보다 ) 의 개수가 많으면 올바르지 않은 것으로 판단하며 바로 for문을 중지한다.

 

또 ((()) 같은 경우는 짝이 맞지 않는 경우로 마지막에 두개의 수가 동일한지를 비교해서 리턴한다.