* [LeetCode] Make The String Great - JavaScript

이은빈 EUNBIN·2021년 4월 30일
0
post-thumbnail

👩🏻‍💻 문제

LeetCode #1544 Make The String Greate



👩🏻‍💻 풀이

// 테스트케이스 통과 실패
var makeGood = function(s) {
    const reg = /[A-Z]/;
    let result = "";
    
    if(s.length <= 1) return s;
    
    function isGood(str) {
        let temp = "";
        for(let i = 0; i < str.length; i++) {
            if(str[i].toUpperCase() == str[i+1]) {
                temp = str.slice(0, i) + str.slice(i+2, str.length);
            }
        }
        return reg.test(temp) ? isGood(temp) : result = temp;
    }
    isGood(s);
    
    return result;
};
// 다른 분의 풀이
var makeGood = function(s) {
    let stack = [s[0]];
    let i = 1;
    
    while (i < s.length) {
        let len = stack.length - 1;
        let flag = false;
        
        if (stack.length) {
            if (/[a-z]/.test(stack[len]) && s[i] === stack[len].toUpperCase()) {
                stack.pop();
                flag = true;
            } 
            else if (/[A-Z]/.test(stack[len]) && s[i] === stack[len].toLowerCase()) {
                stack.pop();
                flag = true;
            }
        }
        if (!flag) stack.push(s[i]);
        i++; 
    }
    return stack.join('');
};

포인트 ① stack 배열 어떻게 이용했는지 학습
포인트 ② flag 변수 사용

profile
Frontend Engineer & Value Creator

0개의 댓글