문제 출처:https://leetcode.com/problems/remove-outermost-parentheses/
문제 분석
이 문제는 주어진 괄호들의 가장 큰 단위로 쪼개서 가장 바깥쪽에 있는 괄호들을 제거하면 되는 문제입니다. 이 문제는 괄호의 종류가 많은 것도 아니고 단일 type이기때문에 여는 괄호의 개수와 닫는 괄호의 개수가 같은 지점을 찾으면 그 부분이 닫히는 지점입니다. 이 점을 유의하면서 문제를 풀었습니다.
코드는 다음과 같습니다:
class Solution {
public:
string removeOuterParentheses(string s) {
string answer = "" ;
int open_cnt = 0, close_cnt = 0, curr = 1 ;
for(int i = 0 ; i < s.size() ; i++){
if(s[i] == '(')
open_cnt += 1 ;
else if(s[i] == ')')
close_cnt += 1 ;
if(open_cnt == close_cnt){
answer += s.substr(curr, i - curr) ;
curr = i + 1 + 1 ;
open_cnt = 0, close_cnt = 0 ;
}
}
return answer ;
}
};
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/LeetCode/P1021_Remove_Outermost_Parentheses.cpp
훈수 및 조언은 언제든 환영입니다.