반응형
프로그래머스
카카오 2020 블라인드 테스트
https://programmers.co.kr/learn/courses/30/lessons/60058
코딩테스트 연습 - 괄호 변환 | 프로그래머스
카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 콘은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
string check(string w);
string solution(string p) {
string answer = "";
int size = p.size();
int cnt = 0;
if(p == "") return "";
for(int i=0; i<size; i++) {
if(p[i] == '(') cnt++;
else cnt--;
if(cnt < 0) break;
}
if(cnt == 0) return p;
answer = check(p);
return answer;
}
string check(string w) {
string u,v;
int wsize = w.size();
int wcnt = 0;
if(w == "") return "";
for(int i=0; i<wsize; i++) {
if(w[i] == '(') wcnt++;
else wcnt--;
if(wcnt == 0) {
u = w.substr(0,i+1);
v = w.substr(i+1,wsize-(i+1));
break;
}
}
int usize = u.size();
int vsize = v.size();
int ucnt = 0;
for(int i=0; i<usize; i++) {
if(u[i] == '(') ucnt++;
else ucnt--;
if(ucnt < 0) break;
}
if(ucnt == 0) {
v = check(v);
return u + v;
}
else {
string str = "";
str += '(';
str += check(v);
str += ')';
u = u.substr(1,usize-2);
usize = u.size();
for(int i=0; i<usize; i++) {
if(u[i] == '(') str += ')';
else str += '(';
}
return str;
}
}
반응형
'코딩테스트 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][DFS] 네트워크 (0) | 2020.03.01 |
---|---|
[프로그래머스] 멀쩡한 사각형 (0) | 2020.03.01 |
[프로그래머스] 가장 큰 수 (0) | 2020.02.27 |
[프로그래머스] 쇠막대기 (0) | 2020.02.27 |
[프로그래머스] 모의고사 (0) | 2020.02.27 |