본문 바로가기
코딩테스트 준비/프로그래머스

[프로그래머스][C++][2단계] 올바른 괄호

by 스테디코디스트 2023. 11. 1.
반응형

<문제 소개>


<소스 코드>

#include<string>
#include <iostream>

using namespace std;

bool solution(string s)
{
    bool answer = true;    
    int count = 0;

    for(int i = 0; i < s.size(); i++)
    {
        char c = s[i];
        
        if(c == '(') count++;
        
        if(c == ')')
        {            
            if(--count < 0) return false;
        }
    }
    
    if(count > 0) answer = false;
    
    return answer;
}

<풀이과정>

1. '('와 ')'의 갯수를 세서 같은 경우에만 올바른 것이므로 해당 경우를 찾아야한다.

2. 먼저 갯수를 셀 count 변수를 선언하고, 문자열 s를 반복하여 각 문자들을 탐색한다.

3. 문자가 '(' 인 경우는 count를 증가시키고 다음 반복으로 넘어간다.

4. 문자가 ')' 인 경우에는 앞서서 '('가 온 경우에만 올 수 있기 때문에 count를 먼저 감소시켜보고, 해당 count가 0보다 작으면 필요한 '(' 의 갯수가 충분하지 않은 경우이므로 false를 바로 리턴해준다.

5. 모든 탐색이 끝나고 난 뒤, 괄호가 올바르게 짝지어졌다면 count가 0이 되야하므로 count가 0보다 큰지를 검사해 크다면 answer을 false로 바꿔준다.

6. 결과값 answer를 리턴한다.

 


<코멘트>

예전에 백준인가 어디서 풀어봤던 문제여서 좀 더 쉽게 푼 것 같다.

그래도 2단계치곤 조금 난이도가 낮은 느낌이다.(1단계 정답률 낮은 문제가 더 어려운 듯)


<제출결과>