그냥... 문제에서 말하는대로 그대로 구현하는게 정답
문제를 잘 이해하지는 못했는데 원하는 바를 잘 구현한 거 같다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string translate(string p, int front, int end) {
string answer = "";
int open = 0, close = 0;
for(int idx = front; idx < end; idx++) {
if (p[idx] == '(') {
open++;
}
else if (p[idx] == ')') {
close++;
}
if(open == close) {
if(p[front] == ')') {
answer += '(';
answer += translate(p, idx + 1, end);
answer += ')';
for(int i = front + 1; i < idx ; i++) {
if(p[i] == '(') {
answer += ')';
}
else {
answer += '(';
}
}
return answer;
}
else if (p[front] == '(') {
for(int i = front; i <= idx; i++) {
answer += p[i];
}
answer += translate(p, idx + 1, end);
return answer;
}
}
}
return answer;
}
string solution(string p) {
string answer = "";
answer = translate(p, 0, p.length());
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]위장 (0) | 2020.03.12 |
---|---|
[프로그래머스]구명보트 (0) | 2020.03.11 |
[프로그래머스]숫자 야구 (0) | 2020.03.10 |
[프로그래머스]전화번호 목록 (0) | 2020.03.10 |
[프로그래머스]H-index (0) | 2020.03.10 |