[Programmers] Level2 : 올바른 괄호
Question
Solution
- string s에 대해 for 루프를 돌린다. ‘(‘ 면 +1, ‘)’면 -1 을 한다. (수량이 0일때 ‘)’ 가 나오면 즉시 false를 반환하고 종료)
- for 루프가 종료되고 수량이 0이 되면 괄호가 올바르게 짝지어진 것이라고 볼 수 있다.
Cord
#include<string>
using namespace std;
bool solution(string s)
{
bool answer = true;
int open = 0;
// '(' 면 open을 증가하고 ')' 면 open을 감소시킨다.
// open이 0이 되어야 올바르게 짝지어진 것이다.
for (int i = 0; i < s.size(); i++)
{
if (s[i] == ')') // ')' 이고 '(' 없을 경우 false 반환하고 종료
{
if (open == 0) { return false; }
else { open -= 1; }
}
else // '(' 이면 수량 증가
{
open++;
}
}
// open 괄호에 대한 짝(close)이 맞춰지지 않으면 false
if (open != 0) { answer = false; }
return answer;
}