728x90
๐ section06 - 2 - ๊ดํธ ๋ฌธ์ ์ ๊ฑฐ
์๊ดํธ()
์ฌ์ด์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ์ ์ธํ๊ณ ๋จ์ ๋ฌธ์๋ง ์ถ๋ ฅํ๋ ๋ฌธ์ ๋ค. ๋์ ํ์ด ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฐ๋ณต๋ฌธ์ ์ ์ธํ๊ณ ํ์ฌ ๊ฐ์ด ๋ฌธ์์ธ์ง ์๋์ง ๊ฒ์ฌํ๋ค.(์ ๊ท์) ์ด๋,
stack
์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉดanswer
์ ๊ฐ์ ๋ํด์ค๋ค. - ํ์ฌ ๊ฐ์ด
(
๋ฉด ๋ชจ๋stack
์ ๋ฃ๋๋ค. - ํ์ฌ ๊ฐ์ด
)
์ธ๋ฐ, ๋ง์ฝstack[-1]
์ด(
๋ฉดstack.pop
์ ํด์ค๋ค.
์ ์๋์ ์กฐ๊ธ ๋ ๊ฐ๋จํ๊ฒ ํธ์ จ๋ค.
(
์ ๋ฌธ์๋ ๋ชจ๋stack.push
ํ๋ค.)
๊ฐ ๋์ค๋ฉด(
๊ฐ ๋์ฌ ๋๊น์ง ๋ชจ๋pop
ํด์ค๋ค.
728x90
let s = "(A(BC)D)EF(G(H)(IJ)K)LM(N)";
// let s = "(AB(A))B(A)";
console.log(solution(s));
// ๋์์ฝ๋
function solution(s) {
let stack = [];
let answer = "";
for (let x of s) {
if (stack.length===0 && /[A-Z]/.test(x)) answer+=x;
if (x === "(") stack.push(x);
else if(x === ")") if (stack[stack.length - 1] === "(") stack.pop();
}
return answer;
}
// ๊ฐ์์ฝ๋
function solution(s){
let stack = [];
for (let x of s){
if (x === ")") while(stack.pop() !== "(");
else stack.push(x)
}
return stack.join("");
}
๋ฐ์ํ
๋๊ธ