올바른 괄호

장준휴·2024년 1월 5일
0

프로그래머스

목록 보기
2/9

문제설명, 제한사항



입출력 예


여기서 주의해야할점이 있다.
단순히 '('와 ')'의 갯수가 맞아야만 하는것이 아니다.

무조건 먼저 '('가 나와서 괄호를 열어야하고, 열린만큼 닫는기호가 있어야한다.(닫는 기호가 더 많아서도 안된다)

처음 시도 코드

class Solution {
    boolean solution(String s) {
        int result = 0;
        char[] c = s.toCharArray();
        for(int i=0; i<c.length; i++){
            if(c[i]=='(')
                result++;
            else
                result--;
        }
        return result==0;
    }
}

처음에 단순히 '(', ')'의 갯수만 같아야하는 줄 알았다....

하지만 5번 11번 답이 자꾸 틀리길래 구글링 해서 알아본 결과
())(() 이 예외가 있다고 한다.

그래서 결국 result 값이 마지막에 0이면 되는 것이 아니라, 매 반복 회차마다 검사하여 0보다 작아지는 경우 return false;를 했더니 정답이었다.!

최종 코드


class Solution {
    boolean solution(String s) {
        int result = 0;
        char[] c = s.toCharArray();
        for(int i=0; i<c.length; i++){
            if(c[i]=='(')
                result++;
            else
                result--;
            if(result<0)
                return false;
        }
        return result==0;
    }
}
profile
나는야 토마토

0개의 댓글