Programmers 76502 괄호 회전하기

로고 이미지

문제 링크 : 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;
}

채점결과

42586


© 2020. All rights reserved.

Powered by Hydejack v8.4.0