코딩 테스트/프로그래머스 코딩 테스트 연습
[JS] 괄호 변경
58청춘
2024. 10. 4. 16:42
728x90
문제
풀이
해당 문제는 문제를 해석하는데 어려움이 있었다...
일단 프로세스를 문제에서 설명해주기 때문에 프로세스를 따르며 구현하면 큰 어려움은 없다.
코드
function solution(p) {
const check = (st) => {
const stack = [];
for (let i = 0; i < st.length; i++) {
if (st[i] === '(') stack.push('(');
else {
if (stack.length === 0) return false;
stack.pop();
}
}
return true;
}
const func = (w) => {
let res = '';
let cnt = 0;
if (w.length === 0) return '';
for (let i = 0; i < w.length; i++) {
if (w[i] === '(') cnt += 1;
else cnt -= 1;
if (cnt === 0) {
const sl = w.slice(0, i + 1);
if (check(sl)) {
res = sl + func(w.slice(i + 1));
return res;
}
else {
res = '(' + func(w.slice(i + 1)) + ')';
for (let j = 1; j < i; j++) {
if (w[j] === '(') res = res + ')';
else res = res + '(';
}
}
return res;
}
}
}
return func(p);
}
728x90