(TIL) 20210827

2021. 8. 28. 00:53TIL(Today I learned)

반응형

📕Facts(한 것)


  • 프로그래머스 문제풀기
  • 노마드 코더 챌린지 참여하기
  • AWS 설치하고 우분투 서버 띄우기
  • 운동하기

 

📕Findings(배운것)


#include <string>
#include <vector>
#include <iostream>
#include <stack>

using namespace std;

bool checkBalance(string p) {
    if(p.size() == 0) {
        return false;
    }
    int left = 0;
    int right = 0;
    for(auto i: p) {
        if(i == '(') {
            left++;
        } else {
            right++;
        }
    }
    if(left == right) {
        return true;
    } else {
        return false;
    }
}

bool checkPerfect(string p) {
    stack<char> st;
    for(auto i : p) {
        if(st.empty()) {
            st.push(i);
        } else {
            if(st.top() == '(' && st.top() != i) {
                st.pop();
            } else {
                st.push(i);
            }
        }
    }
    if(st.empty()) {
        return true;
    } else {
        return false;
    }
}

pair<string, string> recursion(string p) {
     string u = "";
     string v = "";

     for(int i = 0; i < p.size(); i++) {
        if(checkBalance(u)) {
            v += p[i];
        } else {
            u += p[i];
        }
    }
    return make_pair(u,v);
}

string solution(string p) {
    if(checkPerfect(p)) {
        return p;
    }

    string u = recursion(p).first;
    string v = recursion(p).second;


    if(checkPerfect(u)) {
        u += solution(v);
        return u;
    } else {
        string temp = "(";
        temp += solution(v);
        temp += ")";
        for(int i = 1; i < u.size()-1; i++) {
            if(u[i] == '(')
                temp += ')';
            else
                temp += '(';
        }
        return temp;
    }
}

 

프로그래머스 카카오 문제 중 괄호 변환이라는 문제이다.

최대한 객체 지향적으로 문제를 풀어보려했다.

 

 

📕Feeling(느낀 점)


문제를 차근차근 읽으면 풀 수 있다.
문제 속에 답이 있다.

📕여담


 

반응형

'TIL(Today I learned)' 카테고리의 다른 글

(TIL) 20210830  (0) 2021.08.31
(TIL) 20210828  (0) 2021.08.29
(TIL) 20210826  (0) 2021.08.27
(TIL) 20210824  (0) 2021.08.24
(TIL) 20210823  (0) 2021.08.24