728x90
๐ section06 - 5 - ์ ๋ง๋๊ธฐ
์ด์ ์ ํ์ด๋ดค๋ ๋ฌธ์ ๋ค. ๋น์ ์ฒ์ ํ ๋๋ ์ด ๋ฌธ์ ๋ฅผ ์ stack
์ผ๋ก ํธ๋์ง ์ดํด๊ฐ ์ ๋๋๋ฐ, ๋ค์ ๋ณด๋๊น ์กฐ๊ธ์ด๋๋ง ์ดํด๊ฐ ๋๋ค. ์ด์ stack
์ ํ๊ณผ๋ ๋ฌ๋ฆฌ stack[-1]
๊ฐ์ ๋น๊ตํ๋ ๊ฒ์ด ์๋๋ผ ์ฃผ์ด์ง ๋ฌธ์์ด s[i-1]
์ ๊ธฐ์ค์ผ๋ก ๋น๊ตํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ถ๋ถ์ ์ ์บ์นํด์ผ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ์ด์ ๋ฅผ ๋ง๋ฌ์ ๋ cnt
๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ด ์กฐ๊ธ ์ด๋ ค์ธ ์ ์๋๋ฐ, ๋ ์ด์ ๋ฅผ ๋ง๋๊ฒ ๋๋ฉด ์ง๊ธ๊น์ง stack
์ ๋ค์ด๊ฐ ์๋ (
๊ธธ์ด๋งํผ ๋์ ํด์ฃผ๋ฉด ๋๋ค. ((
๋ ์ ๋ง๋๊ธฐ๋ฅผ ์๋ฏธํจ) ๋ ์ด์ ๋ฅผ ๋ง๋์ง ์๊ณ ์ ๋ง๋๊ธฐ (
๋ฅผ ๋ง๋๊ฒ ๋๋ฉด cnt++
์ ํด์ฃผ๋ฉด ๋๋ค.
(
๋ ๋ฌด์กฐ๊ฑดstack
์ ๋ฃ๋๋ค.)
๋ฅผ ๋ง๋ ๋stack.pop()
์ ํ๋๋ฐ, ์ฌ๊ธฐ์s[i-1]
๊ฐ์ด(
์ด๋ผ๋ฉด ๋ ์ด์ (์๋ํ๋ฉด ๋ ์ด์ ๋ ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ์ ์ธ์ ํ ์ ์ฆ,()
ํํ๋ก๋ง ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ)๊ธฐ ๋๋ฌธ์stack
๊ธธ์ด ๋งํผcnt
์ ๋์ ํด์ฃผ๊ณs[i-1]
๊ฐ์ด)
๋ผ๋ฉด ์ ๋ง๋๊ธฐ์ด๋ฏ๋กcnt++
์ ํด์ค๋ค.- ๋ฐ๋ณต๋ฌธ์ด ๋๋๋ฉด ์ ๋ง๋๊ธฐ์ ๊ฐ์
cnt
๋ฅผreturn
ํ๋ค.
728x90
let s = "()(((()())(())()))(())"
console.log(solution(s));
function solution(s){
let n = s.length;
let stack = [];
let cnt = 0;
for (let i = 0; i < n; i++) {
if (s[i] === "(") stack.push(s[i]);
else {
stack.pop();
if (s[i - 1] === "(") cnt += stack.length;
else cnt++;
}
}
return cnt;
}
๋ฐ์ํ
๋๊ธ