어흥
[프로그래머스] 괄호 회전하기 (C++) 본문
728x90
반응형
문제 링크: programmers.co.kr/learn/courses/30/lessons/76502
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
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 거리두기 확인하기 (C++) (0) | 2021.07.16 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 (C++) (0) | 2021.07.16 |
[프로그래머스] 보행자 천국 (C++) (0) | 2021.05.06 |
[프로그래머스] 합승 택시 요금 (C++) (0) | 2021.05.06 |
[프로그래머스] 순위 (C++) (0) | 2021.05.06 |
Comments