Minimum Remove to Make Valid Parentheses

유승선 ·2024년 4월 6일
0

LeetCode

목록 보기
114/122

Daily 문제로 풀어봤다. 어려운 문제도 아니고 valid parentheses 문제는 stack 형식으로 많이 풀어봤지만 조금은? 다른 느낌으로 풀어봤다. 최소한의 parentheses 를 만들어야 하기 때문에 valid 가 아닌 괄호는 다 버려야 한다. 알파벳은 전부 통과 되기 때문에 알파벳은 추가 해줬지만 stack 을 확인하면서 valid 한 괄호는 표시 해두고 마지막에 valid 한 괄호만 추가 해주서 통과 됐다.

stack 문제는 많이 안풀어본 유형이여서 아직까지 좀 생각도 하게 되고 금방금방 안나와서 조금 아쉽다. Daily 라도 문제를 매일 풀어보면서 실력을 늘려보자.

class Solution {
public:
    string minRemoveToMakeValid(string s) {
        stack<pair<char,int>> charStack;
        string answer = "";  
        string tmp = ""; 
        for(int i = 0; i < s.length(); i++){
            if(isalpha(s[i])){
                tmp += s[i]; 
            } else if(s[i] == '('){
                charStack.push({s[i],i}); 
                tmp += '?'; 
            } else{
                if(!charStack.empty()){
                    tmp += ')';
                    tmp[charStack.top().second] = '(';  
                    charStack.pop(); 
                } else{
                    tmp += '!'; 
                }
            }
        }

        for(char& c : tmp){
            if(c != '?' && c != '!'){
                answer += c; 
            }
        }
        return answer; 
    }
};
profile
성장하는 사람

0개의 댓글