[알고리즘 + 자료구조]/[프로그래머스]

프로그래머스 괄호 회전하기

Hevton 2023. 8. 5. 00:15
반응형

 

일단 풀긴 했는데 리팩토링이 필요하다.

회전하면서 check함수를 호출하여 올바른 괄호 상태인지를 체크하는 과정을 가졌다.

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

using namespace std;

int len = 0;

bool check(string s) {
    
    stack<char> stk;
        
    for(int i = 0; i < len; i++) {
        
        if(s[i] == '(' || s[i] == '[' || s[i] == '{')
            stk.push(s[i]);
        else if(stk.empty() || s[i] - stk.top() > 2) return false;
        else
            stk.pop();
        
    }
    
    if(stk.empty())
        return true;
    else
        return false;
    
    
    
}

int solution(string s) {
    
    int answer = 0;
    len = s.length();
    
    for(int i = 0; i < len; i++) {
        if(check(s)) answer++;
        
        char first = s[0];  // 맨 앞의 문자 추출
        s.erase(0, 1);  // 맨 앞의 문자 삭제
        s += first;  // 맨 뒤에 문자 추가

    }
    
    return answer;
}

 

 

다른 사람들의 풀이도 찾아봤는데, 내 풀이가 제일 낫다..?

반응형