Tenary Expression Parser

유승선 ·2024년 4월 2일
0

LeetCode

목록 보기
113/121

오랜만에 풀어보는 리트코드 프리미엄 문제다. 사실 문제를 읽고 이걸 어떻게 푸는거지? 하고 감이 잘 안온 문제 중 하나다. 뭔가 Stack 을 사용하는 것 같기는 한데...하면서 고민해보다가 결국에는 editorial 을 한번 보고 참고 했고 깨달음을 얻었다.

이 문제는 결국 뒤에서부터 루프를 시작해서 필요한 캐릭터들을 계속 stack 에 담고 실제 operation 이 시작 될 때 stack 에서 꺼내야 하는 문제였다.

내가 stack 구조에 좀 익숙하지 않아서 아쉬운 결과가 나오기는 헀는데 그래도 좀 더 신중하게 문제를 읽고 풀어봐야겠다 라는 생각은 하게 됐다.

class Solution {
public:
    string parseTernary(string expression) {
        stack<char> charStack; 

        for(int i  = expression.size()-1; i >= 0; i--){
            
            char currChar = expression[i]; 

            if(currChar == '?'){
                char op = expression[i-1]; 

                char forTrue = charStack.top(); 
                charStack.pop();
                char forFalse = charStack.top();
                charStack.pop(); 

                if(op == 'T'){
                    charStack.push(forTrue); 
                } else{
                    charStack.push(forFalse); 
                }

                i--; 
            } else if(isdigit(currChar) || currChar == 'T' || currChar == 'F'){
                charStack.push(currChar); 
            }

        }

        return string(1,charStack.top()); 
    }
};
profile
성장하는 사람

0개의 댓글