https://school.programmers.co.kr/learn/courses/30/lessons/12909#
문제
올바른 괄호인지 조사
풀이
올바른 괄호가 아닌 조건은 다음이 있다. 이에 따라 작성하면 된다.
1) 끝이 (일 경우 -> 시작하자마자 바로 조사하여 시간 단축
2) (이면 cnt++, )이면 cnt--, 이때 중간에 cnt가 음수인 경우 -> )의 짝이 없음 -> false
3) 다 끝나고 나서 cnt가 0이 아닌 경우 -> (의 짝이 없음 -> false
스택 문제지만 스택을 안쓰고도 할 수 있다.
코드
class Solution {
boolean solution(String str) {
if(str.charAt(str.length()-1)=='(') return false;
int cnt = 0;
for(int i=0; i<str.length(); i++){
char now = str.charAt(i);
if(now == '(') cnt++;
else cnt--;
if(cnt<0) return false;
}
if(cnt!=0) return false;
else return true;
}
}