본문 바로가기

카테고리 없음

[23-01-18] 올바른 괄호

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
반응형


Calendar
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Visits
Today
Yesterday