알고리즘 문제/프로그래머스

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

우대비 2024. 10. 19. 16:45
반응형
 

프로그래머스

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

programmers.co.kr

' ( ',    ' ) ' 두개의 문자로 이루어진 문자열을 입력 받을 때, 문자열로 그려진 괄호가 올바른 괄호인지 체크해주세요.

 

 

 

풀이 방법

괄호 하나는 열고 닫기, 한번 씩만 할 수 있습니다. 즉 올바른 괄호는 ' ( ' 와 ' ) '의 개수가 동일합니다.

개수가 동일하다고 해도 올바르지 않은 괄호일 수 있습니다. " ( ) ) ( " 

해결 방법은 지금까지 연 괄호의 개수를 기록하는 것 입니다. 괄호를 열었다면 ++, 닫았다면 --

예시  " ( ) ) ( " => 1, 0, -1, 0

만약 열려 있는 괄호 보다 더 많이 닫았다면 옳지 않은 괄호이며

마지막에 열려있는 괄호의 수가 0이라면 옳은 괄호가 되겠습니다.

 

#include<string>
#include <iostream>

using namespace std;

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

    return cnt == 0;
}
반응형
LIST