๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[ํ๋ก๊ทธ๋๋จธ์ค 12909] ์ฌ๋ฐ๋ฅธ ๊ดํธ (Javascript)
๋ฌธ์ ์ค๋ช
๊ดํธ๊ฐ ๋ฐ๋ฅด๊ฒ ์ง์ง์ด์ก๋ค๋ ๊ฒ์ '(' ๋ฌธ์๋ก ์ด๋ ธ์ผ๋ฉด ๋ฐ๋์ ์ง์ง์ด์ ')' ๋ฌธ์๋ก ๋ซํ์ผ ํ๋ค๋ ๋ป์
๋๋ค. ์๋ฅผ ๋ค์ด
"()()" ๋๋ "(())()" ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์
๋๋ค.
")()(" ๋๋ "(()(" ๋ ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์
๋๋ค.
'(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฌธ์์ด s๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด true๋ฅผ return ํ๊ณ , ์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ด๋ฉด false๋ฅผ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
๋ฌธ์์ด s์ ๊ธธ์ด : 100,000 ์ดํ์ ์์ฐ์
๋ฌธ์์ด s๋ '(' ๋๋ ')' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์
์ถ๋ ฅ ์
s answer
"()()" true
"(())()" true
")()(" false
"(()(" false
์
์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1,2,3,4
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
โ๏ธIdea Sketch
2021-06-26
1. stack : LIFO
- stack.push() ๋ฐฐ์ด ๋์ ์์ ์ถ๊ฐ
- stack.pop() ๋ฐฐ์ด ๋์ ์๋ ์์ ์ญ์
2. queue : FIFO
- queue.push() ๋ฐฐ์ด ๋์ ์์ ์ถ๊ฐ
- queue.shift() ๋ฐฐ์ด ์์ ์๋ ์์ ์ญ์
3. stack.length๊ฐ 0์ธ๋ฐ x === ')'์ธ ๊ฒฝ์ฐ return false;
4. str๋ฅผ ๋ชจ๋ ์ํํ๋๋ฐ stack.length > 0 ์ธ ๊ฒฝ์ฐ return false;
for (let x of str) {
if (x === '(') stack.push('(');
else if (stack.length === 0) return false;
else stack.pop();
}
if (stack.length > 0) return false;
return true;
โ๏ธ์์ค์ฝ๋
2021-06-26 ์ ํ์ฑ ํต๊ณผ, ํจ์จ์ฑ ํต๊ณผ
function solution(str) {
let stack = [];
for (let x of str) {
if (x === '(') stack.push('(');
else if (stack.length === 0) return false;
else stack.pop();
}
if (stack.length > 0) return false;
return true;
}