(TIL) 20210827
2021. 8. 28. 00:53ㆍTIL(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 |