๋ฌธ์ ๋งํฌ
์ ๊ทผ๋ฐฉ๋ฒ
๋ฌธ์ ํด๊ฒฐ์ ์ํด ํ์ํ ๊ฐ๋ค
1. ๊ดํธ (, )๋ฅผ countํ ๋ณ์ left, right
2. ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅธ ์ํ์ธ์ง ํ์ธํ correctBracket
3. ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ ๋ u๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฉด ๋ง๋ค์ด์ง ๋น ๋ฌธ์์ด emptyStr
4. u์ ์ ์ผ ์, ๋ค ๊ดํธ๋ฅผ ์ง์ฐ๊ณ ๋ค์งํ ๋ฌธ์์ด reversedStr
p = "()))((()" ์ผ๋ ์ฝ๋์ ํ๋ฆ์ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.์ด๋ correctBracket์ด false๊ฐ ๋๋ ๊ฒฝ์ฐ๋ ))(( ๋ฐ์ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก ์ ๋ else ๊ตฌ๋ฌธ์ ๋๊ฒ ๋๋ค.
function solution(p) {
var answer = '';
answer = strRecursive(p);
return answer;
}
const strRecursive = (p) => {
if(p.length === 0) return p;
let left = 0;
let right = 0;
let correctBracket = true;
for(let i = 0; i < p.length; i++){
if(p[i] === '(') left++;
else if(p[i] === ')') right++;
if(left < right) correctBracket = false;
if(left === right){
const [u, v] = [p.slice(0,i+1) , p.slice(i+1)];
if(correctBracket) {
return u + strRecursive(v);
}else{
let emptyStr = '(' + strRecursive(v) + ')'
const reversedStr = u
.slice(1, u.length-1)
.split('')
.map(e => e === '(' ? ')' : '(')
.join('')
return emptyStr + reversedStr;
};
}
}
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ์๊ถ๋ํ (92342) (0) | 2022.05.13 |
---|---|
[Javascript] ํ๋ฆฐํฐ (42587) (0) | 2022.05.06 |
[Javascript] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ (12953) (0) | 2022.05.05 |
[Javascript] ํํ (64065) (0) | 2022.05.04 |
[Javascript] 3์ง๋ฒ ๋ค์ง๊ธฐ (68935) (0) | 2022.05.04 |