Programmers 76502 괄호 회전하기
in Algorithm
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/76502
나의 풀이
스택을 이용하여 같은 괄호짝( ‘(‘ = ‘)’ , ‘{‘ = ‘}’, ‘[’ = ‘]’ ) 끼리 만나면 해당하는 짝을 스택에서 제거한다.
스택이 비어지면 올바른 괄호, 스택이 비어있지 않으면 올바른 괄호가 아니다.
이 과정을 왼쪽으로 회전하며 반복한다.
풀이 코드 : 76502 괄호 회전하기
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
for(int i=0;i<s.size();i++){
vector<char> stack;
stack.push_back(s[0]);
for(int k=1;k<s.size();k++){
if( (stack.back() == '(' && s[k] == ')') || (stack.back() == '[' && s[k] == ']') || (stack.back() == '{' && s[k] == '}') ) stack.pop_back();
else stack.push_back(s[k]);
}
if(stack.empty()) answer++;
string first = s.substr(0,1);
s = s.substr(1,s.size()-1) + first;
}
return answer;
}