Algorithm/์ธํ๋ฐ(inflearn)
[JavaScript/section 6] 05 - ์ ๋ง๋๊ธฐ
_์ฑํธ_
2022. 9. 27. 11:32
728x90
๋ฐ์ํ
๐ 05 - ์ ๋ง๋๊ธฐ(์คํ)
์ ๋ง๋๊ธฐ์ ๋ ์ด์ ์ ๋ฐฐ์น๋ฅผ ๋ํ๋ด๋ ๊ดํธ ํํ์ด ์ฃผ์ด์ก์ ๋, ์๋ ค์ง ์ ๋ง๋๊ธฐ ์กฐ๊ฐ์ ์ด ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
์ ๋ง๋๊ธฐ๊ฐ ๋ ์ด์ ๋ฅผ ๋ง๋ ๋๋ง๋ค ๋ช ๊ฐ์ ์กฐ๊ฐ์ด ๋ฐ์ํ๋ค. ์ด๋ฌํ ์กฐ๊ฐ์ด ์๊ธธ๋๋ง๋ค ๋ฐ๊ตฌ๋์ ๋ฃ์ด์ค๋ค๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฌธ์ ๋ฅผ ์ดํดํ๋๋ฐ ๋ง์ ๋์์ด ๋๋ค.
ํ์ด ๋ฐฉ๋ฒ
- for ๋ฌธ์ ๋๋ฉด์ '('๋ฅผ ๋ง๋๋ฉด ๋ฌด์กฐ๊ฑด ์คํ์ ๋ฃ๋๋ค.
- ')'๋ฅผ ๋ง๋๋ฉด pop() ํจ์๋ฅผ ์ด์ฉํด ์คํ์์ ์๋ฃ๋ฅผ ๊บผ๋ด๋๋ฐ, ์ฌ๊ธฐ์ s[i - 1]์ ๊ฐ์ด '('์ด๋ผ๋ฉด ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ์ ์ธ์ ํ ์์ผ๋ก ๋ ์ด์ ์ ํด๋นํ๋ค. ์คํ์ ๊ธธ์ด๊ฐ ์ ๋ง๋๊ธฐ์ ๊ฐ์์ด๋ฏ๋ก ์คํ์ ๊ธธ์ด๋ฅผ answer ๋ณ์(๋ฐ๊ตฌ๋)์ ๋์ ์ํจ๋ค.
- s[i - 1]์ ๊ฐ์ด ')'์ด๋ผ๋ฉด ์ ๋ง๋๊ธฐ์ ์ค๋ฅธ์ชฝ ๋์ ๋ํ๋ด๋ฏ๋ก answer++์ ํด์ค๋ค. ์ ๋ง๋๊ธฐ์ ๋ง์ง๋ง ์กฐ๊ฐ์ ๋ฐ๊ตฌ๋์ ๋ฃ์ด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
๐ ํ์ด
function solution(s) {
let answer = 0;
let stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === '(') stack.push(s[i]);
else {
stack.pop();
if (s[i - 1] === '(') {
answer += stack.length;
} else {
answer++;
}
}
}
return answer;
}
let a = '(((()(()()))(())()))(()())';
console.log(solution(a));