[Programmers] 괄호 회전하기(Lv.2)

Alice·2023년 7월 31일
0

풀이 소요시간 : 35분

( { ) } 형식의 괄호타입을 인지하지 못하면 마지막 테스트케이스를 통과할 수 없다.

따라서 시간을 소모했고, rotate 라는 함수를 구현하여 일차원 배열을 회전시키는 방식을 익혀두는 것이 좋겠다.

전체 코드

#include <string>
#include <algorithm>
#include <vector>
#include <stack>

using namespace std;

int N;
int Ans;
string Str;

//문자열 회전
void Rotation() {
    Str.push_back(Str[0]);
    Str.erase(0, 1);
}

//올바른 문자열 여부 확인
bool Check() {
    
    stack<char> Stack;
    
    for(int i = 0; i < Str.length(); i++)
    {
        if(Str[i] == '(' || Str[i] == '{' || Str[i] == '[') 
        {
            Stack.push(Str[i]);
            continue;
        }
        if(Stack.size() == 0) return false;
        
        if(Str[i] == ')') 
        {
            if(Stack.top() == '(') Stack.pop();        
        }
        else if(Str[i] == '}')
        {
            if(Stack.top() == '{') Stack.pop();
        }
        else if(Str[i] == ']') 
        {
            if(Stack.top() == '[') Stack.pop();
        }
    }
    
    if(Stack.size() > 0) return false;
    else return true;
    
}

int solution(string s) {
    
    N = s.length();
    Str = s;
    //전역 변수 초기화
    
    for(int n = 0; n < N; n++)
    {
        Rotation();
        if(Check() == true) Ans++;
    }
    
    return Ans;
    
}
profile
SSAFY 11th

0개의 댓글