본문 바로가기
C++ 코딩 문제 풀이/프로그래머스

[Programmers] 올바른 괄호

by 섬댕이 2023. 8. 27.

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

 

프로그래머스

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

programmers.co.kr

 


 

문제 해결 과정

착안

스택(stack) 자료 구조의 원리에 따라 '(' 문자가 들어오는 수 만큼 문자를 카운팅하고, ')' 문자가 들어오는 수 만큼 카운팅한 횟수를 다시 낮추는 방식을 활용하고자 하였다.

 

구현

함수를 실행하여 괄호 문자를 카운팅을 하는 동안 아래와 같은 경우는 문제에서 요구하는 올바른 괄호가 아니다.

 

  • 문자열을 따라 첫 문자부터 마지막 문자까지 카운팅을 완료하고 난 뒤의 카운트가 0이 아닌 경우
  • 카운팅이 0일 때 ')' 문자가 들어와 음수 카운트가 되는 경우

 

[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~

더보기
#include <string>

using namespace std;

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

    return flag == 0;
}

 

실행 결과

댓글