function solution(s) {
let answer = 0;
let stack = [];
let prev;
for (let x of a) {
if (x === '(') stack.push(x);
else {
if (prev === '(') {
stack.pop();
answer += stack.length;
} else {
stack.pop();
answer += 1;
}
}
prev = x;
}
return answer;
}
let a = '(((()(()()))(())()))(()())';
console.log(solution(a));
옛날에 이 문제를 C++로 풀면서 너무 어려워서 좌절했었는데...
별 어려움 없이 쑥 풀려서 울뻔했다 ㅠㅠ
function solution(s) {
let answer = 0;
let stack = [];
let prev;
for (let x of a) {
if (x === '(') stack.push(x);
else {
stack.pop()
if (prev === '(') answer += stack.length;
else answer += 1;
}
prev = x;
}
return answer;
}
중복되는 부분 refactoring을 해 주었다.
function solution(s) {
let answer = 0;
let stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === '(') stack.push('(');
else {
stack.pop();
if (s[i - 1] === '(') answer += stack.length;
else answer++;
//stack.pop(); 이 위치에 하면 레이저까지 카운팅한다.
}
}
return answer;
}
그냥
prev
변수 대신에i-1
을 해준 것 말고는 동일하다.
문제를 잘푼 것 같아서 뿌듯하다 !!!