728x90
반응형
문제해결 과정:
우선 ( 와 ) 를 아스키코드로 변환하여 연산하기 편하게 설정한 후
문자열의 끝이 ( 로 끝나면 false , ( 의 개수와 ) 개수가 같아야하는데 순서가 )()((() 이런식일 땐 false여야한다.
따라서 왼쪽괄호 (가 열리면 count를 ++ 하고, )로 닫히면 count를 --한다. (로 열리지도 않았는데 )가 나오면 count가 -가 되기 때문에 count가 0보다 클때라는 조건도 달아준다.
function solution(s){
var answer = true;
s=[...s];
const tempArr =[];
let left=0;
let right=0;
s.map((item)=>{
tempArr.push(item.charCodeAt(0));
})
if(tempArr[tempArr.length-1]==40 || tempArr[0]==41) return false;
tempArr.map((item)=>{
if(item==40){
left ++;
}else {
if(left >0) left --;
};
})
return left==0? true: false;
}
### 이러면 테스트케이스 6번과 11번이 걸리게 되는데. 이유는 문자열의 시작이 ) 일때 예외처리가 되지 않기 때문이었다.
728x90
반응형