https://school.programmers.co.kr/learn/courses/30/lessons/12909
스택을 이용하는 문제!
'('를 만나면 스택에 넣어주고,
')'를 만나면 스택에서 팝 해주면 된다! 이때, 만약 스택이 비었다면 짝이 될 '('이 부족한 것이므로 answer=false로 바꾸고 반복문을 빠져나온다.
반복문이 끝났는데도 스택이 비지 않았다면, '('이 많은 것이므로 answer=false로 바꾼다.
#include<string>
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
bool solution(string s)
{
bool answer = true;
stack<char>stack;
for(int i=0;i<s.size();i++)
{
if(s[i]=='(')
stack.push('(');
else
{
if(stack.empty())
{
answer=false;
break;
}
else
stack.pop();
}
}
if(!stack.empty())
answer=false;
return answer;
}
'문제를 풀자' 카테고리의 다른 글
[프로그래머스] 다음 큰 숫자(C++) (0) | 2022.08.17 |
---|---|
[프로그래머스] 2 x n 타일링(C++) (0) | 2022.08.17 |
[프로그래머스] 섬 연결하기(C++) (0) | 2022.08.16 |
[프로그래머스] 네트워크(C++) (0) | 2022.08.16 |
[프로그래머스] 행렬의 곱셈(C++) (0) | 2022.08.13 |
댓글