어흥

[프로그래머스] 괄호 회전하기 (C++) 본문

알고리즘/프로그래머스

[프로그래머스] 괄호 회전하기 (C++)

라이언납시오 2021. 5. 10. 18:46
728x90
반응형

문제 링크: programmers.co.kr/learn/courses/30/lessons/76502

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

1. 주의할 점

- 회전시킨 문자열은 어떻게 구상할 것인가

 

2. 구현

- 기존 파라미터로 받은 문자열 SS의 길이를 Len에 저장한다

- SS를 2개 이어서 새로운 SS를 만든다

- For문을 통해 0~Len-1에서 시작해서 Len만큼의 길이를 검사한다 → 회전에 대한 처리를 할 필요가 없다

- Stack을 이용하여 괄호의 짝이 모두 맞아서 Stack이 빈 경우, Answer++를 수행한다

#include <string>
#include <vector>
#include <stack>
using namespace std;

int solution(string ss) {
    int answer = 0;
    int len = ss.size();
    ss+=ss;
    for(int i=0;i<len;i++){
        int idx=i;
        stack<char> s;
        while(idx<i+len){
            char c = ss[idx++];
            if(c=='[' || c=='{' || c=='(') s.push(c);
            else if(c==']'){
                if(s.top()=='[') s.pop();
                else s.push(c);
            }
            else if(c=='}'){
                if(s.top()=='{') s.pop();
                else s.push(c);
            }
            else if(c==')'){
                if(s.top()=='(') s.pop();
                else s.push(c);
            }
        }
        if(s.empty()) answer++;
    }
    return answer;
}
728x90
반응형
Comments