반응형
일단 풀긴 했는데 리팩토링이 필요하다.
회전하면서 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;
}
다른 사람들의 풀이도 찾아봤는데, 내 풀이가 제일 낫다..?
반응형
'[알고리즘 + 자료구조] > [프로그래머스]' 카테고리의 다른 글
프로그래머스 튜플 (0) | 2023.08.07 |
---|---|
프로그래머스 이진 변환 반복하기 (0) | 2023.08.05 |
프로그래머스 피로도 (0) | 2023.08.03 |
프로그래머스 할인 행사 (0) | 2023.08.03 |
프로그래머스 n^2 배열 자르기 (0) | 2023.08.03 |