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;
}๋ฐ์ํ
๋๊ธ