https://programmers.co.kr/learn/courses/30/lessons/60058
โถ ์ฝ๋ :
function solution(p) {
var answer = '';
answer = recursive(p)
return answer;
}
function recursive(p)
{
if (p === '')
{
return '';
}
else
{
let countL = 0;
let countR = 0;
let u = '';
let v = '';
for (let i =0; i < p.length; i++)
{
if (p[i] === '(')
{
countL += 1;
}
else
{
countR += 1;
}
if (countL === countR)
{
u = p.slice(0,i+1);
v = p.slice(i+1,p.length);
break;
}
}
if (checkOk(u))
{
return u + recursive(v);
}
else
{
let temp = '';
u = u.slice(1,u.length-1);
for (const c of u)
{
if (c === '(')
{
temp += ')';
}
else
{
temp += '(';
}
}
return '(' + recursive(v) + ')' + temp;
}
}
}
function checkOk(p)
{
let data = [];
for (const c of p)
{
if (c === '(')
{
data.push(c);
}
else
{
let d = data.pop();
}
}
if (data.length === 0)
{
return true;
}else{
return false;
}
}
โถ ๋ฌธ์ ํ์ด :
1. ์ฃผ์ด์ง ์กฐ๊ฑด๋ค์ ์ฒ์ฒํ ๊ตฌํํ๋ฉด ์ด๋ ต์ง ์๊ฒ ํ ์ ์์๋ค.
1. ์
๋ ฅ์ด ๋น ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ, ๋น ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
2. ๋ฌธ์์ด w๋ฅผ ๋ "๊ท ํ์กํ ๊ดํธ ๋ฌธ์์ด" u, v๋ก ๋ถ๋ฆฌํฉ๋๋ค. ๋จ, u๋ "๊ท ํ์กํ ๊ดํธ ๋ฌธ์์ด"๋ก ๋ ์ด์ ๋ถ๋ฆฌํ ์ ์์ด์ผ ํ๋ฉฐ, v๋ ๋น ๋ฌธ์์ด์ด ๋ ์ ์์ต๋๋ค.
3. ๋ฌธ์์ด u๊ฐ "์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด" ์ด๋ผ๋ฉด ๋ฌธ์์ด v์ ๋ํด 1๋จ๊ณ๋ถํฐ ๋ค์ ์ํํฉ๋๋ค.
3-1. ์ํํ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ u์ ์ด์ด ๋ถ์ธ ํ ๋ฐํํฉ๋๋ค.
4. ๋ฌธ์์ด u๊ฐ "์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด"์ด ์๋๋ผ๋ฉด ์๋ ๊ณผ์ ์ ์ํํฉ๋๋ค.
4-1. ๋น ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ก '('๋ฅผ ๋ถ์
๋๋ค.
4-2. ๋ฌธ์์ด v์ ๋ํด 1๋จ๊ณ๋ถํฐ ์ฌ๊ท์ ์ผ๋ก ์ํํ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ ์ด์ด ๋ถ์
๋๋ค.
4-3. ')'๋ฅผ ๋ค์ ๋ถ์
๋๋ค.
4-4. u์ ์ฒซ ๋ฒ์งธ์ ๋ง์ง๋ง ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ณ , ๋๋จธ์ง ๋ฌธ์์ด์ ๊ดํธ ๋ฐฉํฅ์ ๋ค์ง์ด์ ๋ค์ ๋ถ์
๋๋ค.
4-5. ์์ฑ๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
2. ๊ตฌํ ๋ฌธ์ ๋ก ์ฌ๊ท์์ ๋ช ์ํด ์ฃผ์์ผ๋ฉฐ ์ด์ ๋ฐ๋ผ ์ฌ๊ทํจ์(recursive)์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ธ์ง ํ์ธํ๋ checkOk()ํจ์๋ฅผ ์ ์ํด ์ฌ์ฉํ์๋ค.
'๐ฏ CodingTest > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] (Javascript) ์์ ์ต๋ํ (0) | 2022.04.25 |
---|---|
[Programmers] (Javascript) ๋ด์ค ํด๋ฌ์คํฐ๋ง (0) | 2022.04.25 |
[Programmers] (Javascript) ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ (0) | 2022.04.21 |
[Programmers] (Javascript) ์คํ์ฑํ ๋ฐฉ (0) | 2022.04.21 |
[Programmers] (Javascript) ๋ฌธ์์ด ์์ถ (0) | 2022.04.21 |