function solution(s){
let count = 0;
for(let i = 0; i < s.length; i++){
if(s[0] === ')'){
return false;
}
if(s[i] === '('){
count += 1;
} else {
count -= 1;
}
if(s[s.length - 1] === '('){
return false;
}
}
return count === 0;
}
테스트 케이스 중 5번, 11번에서 계속 오류가 났다.
function solution(s){
let count = 0;
for(let i = 0; i < s.length; i++){
if(s[0] === ')'){
return false;
}
if(s[i] === '('){
count += 1;
} else {
if (count === 0){
return false;
}
count -= 1;
}
}
return count === 0;
}
효율성 테스트 2개 중 1개에서 시간 초과가 나왔다.
'('가 나오면 스택에 push, ')'가 나오면 스택에서 pop을 해준다.
const stack = [];
for(let i = 0; i < s.length; i++){
if(s[i] === '('){
stack.push(s[i])
}
if(s[i] === ')'){
stack.pop()
}
}
return stack.length === 0;
테스트 케이스 18중 1개에서 오류가 나왔다. 효율성은 통과하였다.
어떤 예외처리를 못하였는지 고민해보았다.
if(s[i] === ')'){
if(stack.length === 0){
return false;
}
stack.pop()
}
스택이 비어있을 때, pop을 할 수 없으므로
')'이 제일 먼저 시작할 때, false를 리턴해주어야한다.
스택에 저장된 값을 사용하는 것이 아니라 스택는 이번 문제에서는 어울리지 않는 문제인 것 같다.