ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๊ดํธ๊ฐ ์ ๋ ฅ๋๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด "YES", ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฉด "NO"๋ฅผ ์ถ๋ ฅํฉ๋๋ค.(())() ์ด๊ฒ์ ๊ดํธ์ ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์นํ๋ ๊ฑฐ์ง๋ง, (()()))) ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
๋ฌธ์ ํ์ด
์คํ
- ์คํ(stack)์ ์ ํ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ์์ฐจ ๋ฆฌ์คํธ(๋์ด) ์๋ฃ ๊ตฌ์กฐ
- FIFO(First In Last Out) ์ ์ ํ์ถ: ์ฒ์์ ๋ค์ด๊ฐ ๊ฒ์ด ๋์ค์ ๋์ค๋๋ก ๋์ด ์๋ ์๋ฃ ๊ตฌ์กฐ
- ์์์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์๋ฃ ๊ตฌ์กฐ์ ํ์ชฝ ๋์์๋ง ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ํน์ง
- push ์ฐ์ฐ: ์๋ฃ๊ตฌ์กฐ ๋ด์ ๋น์ด ์๋ ๋ ๊ณต๊ฐ์ ๋ฐ์ดํฐ ์ ์ฌ
- pop ์ฐ์ฐ: ์๋ฃ๊ตฌ์กฐ ๋ด์ ๋์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์
๊ดํธ๋ ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ๊ฐ ํ ์์ด๋ค.
์์ ํ ๊ดํธ๊ฐ ๋๊ธฐ ์ํด์๋ ๊ฐ ๊ดํธ๊ฐ ํ ์์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
์ด๋ฅผ ์ํด ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฌ๋ ๊ดํธ๊ฐ ๋ฌธ์์ด ๋ด์ ๋์ค๋ฉด ์๋ฃ๊ตฌ์กฐ์ ์ ์ฌํ๋ค. ์ดํ์ ์ฌ๋ ๊ดํธ๊ฐ ์ฐ์์ ์ผ๋ก ๋์ค๊ฒ ๋๋ค๋ฉด
๊ณ์ํด์ ์๋ฃ๊ตฌ์กฐ์ ๋ค์ ์ธ๋ฑ์ค์ ์ ์ฌํ๋ค.
๋ง์ฝ ๋ซ๋ ๊ดํธ๊ฐ ๋ฌธ์์ด ๋ด์์ ์ฐธ์กฐํ๊ฒ ๋ ๊ฒฝ์ฐ ์ ์ฌํ์๋ ์ฌ๋ ๊ดํธ๋ฅผ ์๋ฃ๊ตฌ์กฐ ๋ด์์ ์์ ์ค๋ค.
์ด๋ ์ฌ๋ ๊ดํธ๊ฐ ๊ธฐ์กด์ ์๋ฃ๊ตฌ์กฐ ๋ด์ ํ๋๋ ์๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์์ ์ฃผ๋ ๊ฒ์ด ์๋๋ผ ํ์ฌ ์ฐธ์กฐํ๊ณ ์๋ ๋ซ๋ ๊ดํธ๋ฅผ ์๋ฃ๊ตฌ์กฐ ๋ด์ ์ ์ฌํด ์ค๋ค.
์์ ๊ฐ์ ์ฐ์ฐ์ ๋ฌธ์์ด ๋๊น์ง ๋ฐ๋ณตํ์ ๊ฒฝ์ฐ ์์ ํ ๊ดํธ์ผ ๊ฒฝ์ฐ์๋ ์๋ฃ๊ตฌ์กฐ ๋ด์๋ ์ด๋ ํ ๋ซ๋ ๊ดํธ๊ฐ ์กด์ฌํด์๋ ์๋๋ค.
๋ซ๋ ๊ดํธ๊ฐ ์๋ฃ๊ตฌ์กฐ ๋ด์ ํ๋๋ผ๋ ๋จ์์๋ค๋ฉด ์ด๋ ํ ์์ ์ฐพ๋ ๋ฐ ์คํจํด์ ๋จ์ ์์ฌ ๊ดํธ๊ฐ ์๋ค๋ ์ ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฝ๋
function solution(str) {
let answer = "YES";
let lp = "(";
let rp = ")";
let lpNum = 0; // ํ์ฌ ๋จ์ ์๋ lp(์ฌ๋ ๊ดํธ)์ ๊ฐฏ์
let checkArr = [];
for(let x of str) {
if(x === lp) {
checkArr.push(1);
lpNum++;
}
if(lpNum === 0 && x === rp) { //๋จ์ ์๋ lp๊ฐ ์์ ๊ฒฝ์ฐ_๋จ์ ์๋ ๋ซ๋ ๊ดํธ๋ฅผ ์ ์ฌ
checkArr.push(1);
}
if(lpNum > 0 && x === rp) { //๋จ์ ์๋ lp๊ฐ ์์ ๊ฒฝ์ฐ
checkArr.pop();
lpNum--;
}
}
if(checkArr.length !== 0) answer = "NO";
return answer;
}
let str = "(()(()))(()"
console.log(solution(str));
function solution(str) {
let answer = "YES";
let stack = [];
for(let x of str) {
if(x === '(') stack.push(x);
else {
if(stack.length === 0) return "NO";
stack.pop(x);
}
}
if(stack.length > 0) return "NO";
return answer;
}
let str = "(()(()))(()"
console.log(solution(str));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์์ ์ฐ์ฐ(postfix) (0) | 2021.07.13 |
---|---|
๊ดํธ๋ฌธ์์ ๊ฑฐ (0) | 2021.07.11 |
๋ชจ๋ ์๋๊ทธ๋จ ์ฐพ๊ธฐ (0) | 2021.07.09 |
[ํด์ฌ]์๋๊ทธ๋จ (0) | 2021.07.08 |
[ํด์ฌ]ํ๊ธ ํ์ฅ (0) | 2021.07.07 |