본문 바로가기
프로그래머스

괄호 변환 C++

by paysmile 2021. 8. 8.

https://programmers.co.kr/learn/courses/30/lessons/60058

 

코딩테스트 연습 - 괄호 변환

카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를

programmers.co.kr

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

using namespace std;
string u, v;

int checkRight() {
    int sum = 0;
    int i = 0;
    for (; i < u.size(); i++) {
        if ((sum == 0) && (u[i] == ')')) {
            sum = 1;
            break;
        }
        if (u[i] == '(') sum++;
        else sum--;
    }
    return sum;
}

void DivideStr() {
    bool flag = true;
    int sum = 0;
    int i = 0;
    for (; i < u.size(); i++) {
        if (u[i] == '(') sum++;
        else sum--;
        if (sum==0) {
            v = u.substr(i+1);
            u = u.substr(0,i+1);
        }
    }
}

string solution(string p) {
    string answer = "";
    u = p;
    if (checkRight() == 0)
    return p;

    while (true) {
        DivideStr();
        //u가 올바른 문자열
        if (checkRight() == 0) {
            answer += u;
            u = v;
            answer += solution(u);
            break;
        }
        //u가 올바른 문자열이 아님
        else {
            answer += "(";
            string tmp = u;
            u = v;
            answer += solution(u);
            answer += ")";
            for (int i = 1; i < tmp.size() - 1; i++) {
                if (tmp[i] == '(') answer += ")";
                else {
                     answer += "(";
                }
            }
            break;
    }
 }
 
 return answer;
}

'프로그래머스' 카테고리의 다른 글

자물쇠와 열쇠 C++  (0) 2021.08.22
매출 하락 최소화 C++  (0) 2021.08.09
카드 짝 맞추기 C++  (0) 2021.08.01
광고 삽입 C++  (0) 2021.07.07
순위 검색 C++  (0) 2021.07.01