Simple reversed parenthesis ( 6 kyu )
문제
Given a string, return the minimal number of parenthesis reversals needed to make balanced parenthesis.
For example:
solve(")(") = 2 Because we need to reverse ")" to "(" and "(" to ")". These are 2 reversals.
solve("(((())") = 1 We need to reverse just one "(" parenthesis to make it balanced.
solve("(((") = -1 Not possible to form balanced parenthesis. Return -1.
괄호쌍을 맞추기 위해 최소 몇개의 괄호를 뒤집어야 하는지 구하는 문제
풀이
function solve(s) {
while ( s.includes('()') ) {
s = s.replace(/\(\)/g, '');
}
if ( s.length % 2 === 1 ) return -1;
let count = 0;
const obj = {
')(': 2,
'((': 1,
'))': 1,
};
for ( let i = 0; i <= s.length-2; i += 2 ) {
count += obj[s[i]+s[i+1]]
}
return count;
}
맞는 괄호쌍이 없어질 때까지 while로 지워주고,
객체를 만들어 뒤집어야하는 개수를 미리 적어 놓고 찾아서 count에 더해줌
다른 사람의 풀이
function solve(s){
if(s.length%2) return -1;
var t=0, d=0;
for(let c of s) {
if(c==='(') d++;
else if(d) d--;
else {t++; d++;}
}
return t+d/2;
}
모르겠지만 신기하게 풀었다