function solution(s) {
let splitS = s.split("");
let stack = [];
for (let i = 0; i < splitS.length; i++) {
stack.push(splitS[i]);
if (stack[stack.length - 2] === "(" && stack[stack.length - 1] === ")") {
stack.pop();
stack.pop();
}
}
return stack.length === 0 ? true : false;
}
문자열로 풀려고 하니, 효율성 테스트에서 실패를 했다.
function solution(s) {
let stackCount = 0;
for (let i = 0; i < s.length; i++) {
s[i] === "(" ? (stackCount += 1) : (stackCount -= 1);
if (stackCount < 0) {
return false;
}
}
return stackCount === 0 ? true : false;
}
문자열이 아닌 숫자로 만들어주어서, "(" 일때 1을 더해주고 ")"일때 1을 빼주어서
마지막 stackCount 가 0이라면 true를, 그게 아니라면 false를 리턴해준다.
그리고 반복문 내에서 stackCount가 0보다 작아졌을때는 ")"이 먼저 등장한 것이므로, false를 리턴해준다.
또한 splitS로 문자열 배열로 만들어서 반복문을 돌렸는데, 그렇게 해주어도 효율성 테스트에서 실패가 나왔다.
문자열일때는 그냥 문자열 자체를 반복문으로 돌려주는게 나은거 같다.