# Balanced Brackets (Stacks)
[문제]
[코드]
string isBalanced(string s) {
stack<char> stack;
string result;
int i;
for(i = 0; i < s.size(); i++)
{
char c;
c = s.at(i);
if(c=='(' || c=='{' || c=='[')
stack.push(c);
else
{
if(!stack.empty() && ((stack.top()=='(' && c==')') || (stack.top()=='{' && c=='}') || (stack.top()=='[' && c==']')))
stack.pop();
else return "NO";
}
}
return result = stack.empty() ? "YES" : "NO";
}
[코드설명]
괄호의 짝을 맞추는 문제로 스택을 사용해서 해결할 수 있다.
열린 괄호일 경우 스택에 추가하고, 닫힌 괄호일 경우 스택의 top과 비교해서 짝이 맞으면 pop하여 해결 가능하다.
열린 괄호라면 스택에 추가.
닫힌 괄호라면 스택의 top과 비교.
빈 스택이 아니고, 짝이 맞다면 pop.
아니라면 balanced bracket이 아니므로 "NO" 반환.
for문이 끝난 후에도 스택 상태를 검사해서 빈 스택이면 "YES", 아니라면 "NO" 반환.
[채점 결과]