코딩테스트
[프로그래머스][C++] 괄호 회전하기
이쿠우우
2022. 3. 25. 17:12
반응형
https://programmers.co.kr/learn/courses/30/lessons/76502
글쓴이의 답
개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...
#include <string>
#include <deque>
#include <vector>
#include <iostream>
using namespace std;
bool calculate(deque<char> map){
bool result = true;;
vector<char> save;
for(char temp : map){
if(0 == save.size()){
if((']' == temp) || ('}' == temp) || (')' == temp)){
result = false;
break;
}
}
if(('[' == temp) || ('{' == temp) || ('(' == temp)){
save.push_back(temp);
}
else{
char top = save[save.size()-1];
if(((']' == temp) && ('[' == top)) ||
(('}' == temp) && ('{' == top)) ||
((')' == temp) && ('(' == top))){
save.pop_back();
}
else{
result = false;
break;
}
}
}
if(0 != save.size()){
result =false;
}
return result;
}
int solution(string s) {
int answer = 0;
deque<char> map;
for(int i=0; i< s.size(); i++){
map.push_back(s[i]);
}
for(int i=0; i< s.size(); i++){
if(calculate(map)) {
answer++;
}
char temp = map[0];
map.pop_front();
map.push_back(temp);
}
return answer;
}
꾸준히 하다보면 실력이 늘겠지..
반응형