1. 문제
코딩테스트 연습 - 괄호 변환
카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴�
programmers.co.kr
2. 소스코드
- 처음 문제를 보면 장문에 현기증.
- 근데 문제에 정답이 있다.
- 문제에 적힌대로 그냥 아무생각 없이 "그대로 구현"만 하면 된다.
소스코드
#include <string>
#include <algorithm>
#include <stack>
using namespace std;
bool isRight(string str){
stack <char> st;
for(char ch : str){
if(ch == ')' and !st.empty() and st.top() == '(')
st.pop();
else
st.push(ch);
}
if(!st.size()) return true;
return false;
}
string splitU(string p){
string u = "";
int cnt = 0;
for(int i = 0; i < p.size(); ++i){
if(p[i] == '(') cnt++;
else cnt--;
u += p[i];
if(cnt == 0)
return u;
}
}
string recur(string p){
if(p == "") return p;
string u = splitU(p);
string v = "";
if(u.size() != p.size())
v = p.substr(u.size());
if(isRight(u)) {
return u += recur(v);
}
else{
string temp = "(";
temp += recur(v);
temp += ')';
u = u.substr(1,u.size()-2);
for(int i = 0 ; i < u.size(); ++i)
if(u[i] == '(') u[i] = ')';
else u[i] = '(';
temp += u;
return temp;
}
}
string solution(string p) {
if(isRight(p)) return p;
return recur(p);
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[ 프로그래머스 / 구현 ] 프렌즈4블록 (KaKao) (0) | 2020.07.03 |
---|---|
[ 프로그래머스 / 구현 ] 단체사진 찍기 (KaKao) (0) | 2020.07.02 |
[ 프로그래머스 / Stack ] 짝지어 제거하기 (0) | 2020.07.02 |
[ 프로그래머스 ] 예상 대진표 (0) | 2020.07.02 |
[ 프로그래머스 / 문자열 ] 후보키 (KaKao) (0) | 2020.07.02 |