괄호가 들어오는 문제는 대부분 stack으로 푸는 문제라고 보면 된다. 여는 괄호를 만나면 무조건 stack에다가 push를 한다.
)앞에 부분이 (이면 쏘고있는 부분이라고 보면 되고 )이면 막대기의 끝이라고 보면 된다. )괄호를 만나면 stack에서 )를 무조건 하나 빼야한다. 그리고 answer에다가 잘린 갯수(stack에 있는 ( 개수)를 answer에다가 계속해서 누적한다.
아래 코드를 보자.
<body>
<script>
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 += 1;
}
}
return answer;
}
let a = "()(((()())(())()))(())";
console.log(solution(a));
</script>
</body>
<출처 : 자바스크립트 알고리즘 문제풀이(코딩테스트 대비): 김태원>
참고:
자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의
자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., 개발
www.inflearn.com
'JavaScript > JS_Algorithm' 카테고리의 다른 글
[인프런 - JS 알고리즘 문제풀이] Queue 판단2 (0) | 2021.08.06 |
---|---|
[인프런 - JS 알고리즘 문제풀이] Queue 판단1 (0) | 2021.08.06 |
[인프런 - JS 알고리즘 문제풀이] stack판단4 (0) | 2021.08.05 |
[인프런 - JS 알고리즘 문제풀이] stack판단3 (0) | 2021.08.05 |
[인프런 - JS 알고리즘 문제풀이] stack판단2 (0) | 2021.08.05 |