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

YH·2023년 10월 17일
0

문제

올바른 괄호 : 문제 링크


문제 분석

  • 괄호가 바르게 짝지어졌다는 것은 '('문자로 열렸으면 반드시 짝지어서 ')'문자로 닫혀야 한다는 뜻이다.
    • "()()" 또는 "(())()"는 올바른 괄호이다.
    • ")()(" 또는 "(()("는 올바르지 않은 괄호이다.
  • '('또는 ')'로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return하고, 올바르지 않은 괄호이면 false를 return
  • for loop를 통해 문자열 s의 첫번째 원소부터 마지막까지 검사하고, '('일 경우 answer을 1씩 증가시킴. ')'일 경우 answer이 0보다 크면, 즉 앞에 '('이 있었을경우 1를 감소시키고, 아니라면 '('이 없었음을 의미하고 올바르지 않은 괄호이므로 false를 return. for loop를 탈출한 후, 마지막 원소가 '('일 경우를 대비하여 한번더 if문을 통해 answer이 0보다 큰지 확인하여, 크다면 false를 return. 이전에 false를 return 하지않았다면 올바른 괄호이므로 true를 return

풀이

#include <string>
#include <iostream>

using namespace std;

bool solution(string s)
{
    int answer = 0;
    
    for(int i = 0; i < s.size(); ++i) {
        if (s[i] == '(') answer += 1;
        else {
            if (answer > 0) answer -= 1;
            else return false;
        }
    }
    if (answer > 0) return false;
    return true;
}
profile
Keep Recycling Your Dreams

0개의 댓글